Merge branch 'RED-9578' into 'master'
RED-9578: implemented the new approval modal layout. See merge request redactmanager/red-ui!572
This commit is contained in:
commit
a51e68c3d8
@ -1,7 +1,7 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable, signal } from '@angular/core';
|
||||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||||
import { IConfirmationDialogData, IqserDialog, LoadingService } from '@iqser/common-ui';
|
import { IConfirmationDialogData, IqserDialog, LoadingService } from '@iqser/common-ui';
|
||||||
import { Dossier, File, User, WorkflowFileStatus, WorkflowFileStatuses } from '@red/domain';
|
import { ApproveResponse, Dossier, File, User, WorkflowFileStatus, WorkflowFileStatuses } from '@red/domain';
|
||||||
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
||||||
import { FileManagementService } from '@services/files/file-management.service';
|
import { FileManagementService } from '@services/files/file-management.service';
|
||||||
import { FilesService } from '@services/files/files.service';
|
import { FilesService } from '@services/files/files.service';
|
||||||
@ -11,6 +11,7 @@ import { AssignReviewerApproverDialogComponent } from '../../shared-dossiers/dia
|
|||||||
import { DossiersDialogService } from '../../shared-dossiers/services/dossiers-dialog.service';
|
import { DossiersDialogService } from '../../shared-dossiers/services/dossiers-dialog.service';
|
||||||
import { FileAssignService } from '../../shared-dossiers/services/file-assign.service';
|
import { FileAssignService } from '../../shared-dossiers/services/file-assign.service';
|
||||||
import { getCurrentUser } from '@common-ui/users';
|
import { getCurrentUser } from '@common-ui/users';
|
||||||
|
import { ApproveWarningDetailsComponent } from '@shared/components/approve-warning-details/approve-warning-details.component';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class BulkActionsService {
|
export class BulkActionsService {
|
||||||
@ -110,34 +111,33 @@ export class BulkActionsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async approve(files: File[]): Promise<void> {
|
async approve(files: File[]): Promise<void> {
|
||||||
const foundAnalysisRequiredFile = files.find(file => file.analysisRequired);
|
this._loadingService.start();
|
||||||
const foundUpdatedFile = files.find(file => file.hasUpdates);
|
const approvalResponse: ApproveResponse[] = await this._filesService.getApproveWarnings(files);
|
||||||
if (foundAnalysisRequiredFile || foundUpdatedFile) {
|
this._loadingService.stop();
|
||||||
this._dialogService.openDialog(
|
const hasWarnings = approvalResponse.some(response => response.hasWarnings);
|
||||||
'confirm',
|
if (!hasWarnings) {
|
||||||
{
|
return;
|
||||||
title: foundAnalysisRequiredFile
|
|
||||||
? _('confirmation-dialog.approve-multiple-files-without-analysis.title')
|
|
||||||
: _('confirmation-dialog.approve-multiple-files.title'),
|
|
||||||
question: foundAnalysisRequiredFile
|
|
||||||
? _('confirmation-dialog.approve-multiple-files-without-analysis.question')
|
|
||||||
: _('confirmation-dialog.approve-multiple-files.question'),
|
|
||||||
confirmationText: foundAnalysisRequiredFile
|
|
||||||
? _('confirmation-dialog.approve-multiple-files-without-analysis.confirmationText')
|
|
||||||
: null,
|
|
||||||
denyText: foundAnalysisRequiredFile ? _('confirmation-dialog.approve-multiple-files-without-analysis.denyText') : null,
|
|
||||||
} as IConfirmationDialogData,
|
|
||||||
async () => {
|
|
||||||
this._loadingService.start();
|
|
||||||
await this._filesService.setApproved(files);
|
|
||||||
this._loadingService.stop();
|
|
||||||
},
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
this._loadingService.start();
|
|
||||||
await this._filesService.setApproved(files);
|
|
||||||
this._loadingService.stop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const fileWarnings = approvalResponse.map(response => ({ fileId: response.fileId, fileWarnings: response.fileWarnings }));
|
||||||
|
this._dialogService.openDialog(
|
||||||
|
'confirm',
|
||||||
|
{
|
||||||
|
title: _('confirmation-dialog.approve-file.title'),
|
||||||
|
question: _('confirmation-dialog.approve-file.question'),
|
||||||
|
translateParams: { questionLength: files.length },
|
||||||
|
confirmationText: _('confirmation-dialog.approve-file.confirmationText'),
|
||||||
|
denyText: _('confirmation-dialog.approve-file.denyText'),
|
||||||
|
component: ApproveWarningDetailsComponent,
|
||||||
|
componentInputs: { data: signal(fileWarnings), files: signal(files) },
|
||||||
|
cancelButtonPrimary: true,
|
||||||
|
} as IConfirmationDialogData,
|
||||||
|
async () => {
|
||||||
|
this._loadingService.start();
|
||||||
|
await this._filesService.setApproved(files);
|
||||||
|
this._loadingService.stop();
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
assign(files: File[]): void {
|
assign(files: File[]): void {
|
||||||
|
|||||||
@ -1,14 +1,17 @@
|
|||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th *ngFor="let column of columns" [ngClass]="{ hide: !column.show, 'w-50': staticColumns }">
|
<th *ngFor="let column of columns()" [ngClass]="{ hide: !!column.hide, 'w-50': staticColumns() && shouldApplyHalfWidth() }">
|
||||||
<label>{{ column.label }}</label>
|
<label>{{ column.label }}</label>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody [ngStyle]="{ height: redactedTextsAreaHeight + 'px' }">
|
<tbody [ngStyle]="{ height: redactedTextsAreaHeight() + 'px' }">
|
||||||
<tr *ngFor="let row of data">
|
<tr *ngFor="let row of data()">
|
||||||
<td *ngFor="let cell of row" [ngClass]="{ hide: !cell.show, bold: cell.bold, 'w-50': staticColumns }">
|
<td
|
||||||
|
*ngFor="let cell of row"
|
||||||
|
[ngClass]="{ hide: !!cell.hide, bold: cell.bold, 'w-50': staticColumns() && shouldApplyHalfWidth() }"
|
||||||
|
>
|
||||||
{{ cell.label }}
|
{{ cell.label }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@ -27,7 +27,7 @@ table {
|
|||||||
|
|
||||||
th,
|
th,
|
||||||
td {
|
td {
|
||||||
&:not(.w-50) {
|
&:first-child:not(.w-50) {
|
||||||
width: 25%;
|
width: 25%;
|
||||||
}
|
}
|
||||||
max-width: 0;
|
max-width: 0;
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
import { Component, Input } from '@angular/core';
|
import { Component, computed, input } from '@angular/core';
|
||||||
import { NgClass, NgForOf, NgStyle } from '@angular/common';
|
import { NgClass, NgForOf, NgStyle } from '@angular/common';
|
||||||
|
|
||||||
export interface ValueColumn {
|
export interface ValueColumn {
|
||||||
label: string;
|
label: string;
|
||||||
show: boolean;
|
hide?: boolean;
|
||||||
bold?: boolean;
|
bold?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18,11 +18,12 @@ const MAX_ITEMS_DISPLAY = 10;
|
|||||||
styleUrl: './selected-annotations-table.component.scss',
|
styleUrl: './selected-annotations-table.component.scss',
|
||||||
})
|
})
|
||||||
export class SelectedAnnotationsTableComponent {
|
export class SelectedAnnotationsTableComponent {
|
||||||
@Input({ required: true }) columns: ValueColumn[];
|
readonly columns = input.required<ValueColumn[]>();
|
||||||
@Input({ required: true }) data: ValueColumn[][];
|
readonly data = input.required<ValueColumn[][]>();
|
||||||
@Input() staticColumns = false;
|
readonly staticColumns = input(false);
|
||||||
|
|
||||||
get redactedTextsAreaHeight() {
|
readonly redactedTextsAreaHeight = computed(() =>
|
||||||
return this.data.length <= MAX_ITEMS_DISPLAY ? TABLE_ROW_SIZE * this.data.length : TABLE_ROW_SIZE * MAX_ITEMS_DISPLAY;
|
this.data().length <= MAX_ITEMS_DISPLAY ? TABLE_ROW_SIZE * this.data().length : TABLE_ROW_SIZE * MAX_ITEMS_DISPLAY,
|
||||||
}
|
);
|
||||||
|
readonly shouldApplyHalfWidth = computed(() => this.columns().filter(column => !column.hide).length === 2);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,19 +77,10 @@ export class EditRedactionDialogComponent
|
|||||||
readonly isRedacted = this.annotations.every(annotation => annotation.isRedacted);
|
readonly isRedacted = this.annotations.every(annotation => annotation.isRedacted);
|
||||||
readonly isImported: boolean = this.annotations.every(annotation => annotation.imported);
|
readonly isImported: boolean = this.annotations.every(annotation => annotation.imported);
|
||||||
readonly allRectangles = this.annotations.reduce((acc, a) => acc && a.AREA, true);
|
readonly allRectangles = this.annotations.reduce((acc, a) => acc && a.AREA, true);
|
||||||
readonly tableColumns = [
|
readonly tableColumns: ValueColumn[] = [{ label: 'Value' }, { label: 'Type' }];
|
||||||
{
|
|
||||||
label: 'Value',
|
|
||||||
show: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Type',
|
|
||||||
show: true,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
readonly tableData: ValueColumn[][] = this.data.annotations.map(redaction => [
|
readonly tableData: ValueColumn[][] = this.data.annotations.map(redaction => [
|
||||||
{ label: redaction.value, show: true, bold: true },
|
{ label: redaction.value, bold: true },
|
||||||
{ label: redaction.typeLabel, show: true },
|
{ label: redaction.typeLabel },
|
||||||
]);
|
]);
|
||||||
options: DetailsRadioOption<RedactOrHintOption>[] | undefined;
|
options: DetailsRadioOption<RedactOrHintOption>[] | undefined;
|
||||||
legalOptions: LegalBasisOption[] = [];
|
legalOptions: LegalBasisOption[] = [];
|
||||||
|
|||||||
@ -60,19 +60,10 @@ const DOCUMINE_LEGAL_BASIS = 'n-a.';
|
|||||||
export class ForceAnnotationDialogComponent extends BaseDialogComponent implements OnInit {
|
export class ForceAnnotationDialogComponent extends BaseDialogComponent implements OnInit {
|
||||||
readonly isDocumine = getConfig().IS_DOCUMINE;
|
readonly isDocumine = getConfig().IS_DOCUMINE;
|
||||||
|
|
||||||
readonly tableColumns = [
|
readonly tableColumns: ValueColumn[] = [{ label: 'Value' }, { label: 'Type' }];
|
||||||
{
|
|
||||||
label: 'Value',
|
|
||||||
show: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Type',
|
|
||||||
show: true,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
readonly tableData: ValueColumn[][] = this._data.annotations.map(redaction => [
|
readonly tableData: ValueColumn[][] = this._data.annotations.map(redaction => [
|
||||||
{ label: redaction.value, show: true, bold: true },
|
{ label: redaction.value, bold: true },
|
||||||
{ label: redaction.typeLabel, show: true },
|
{ label: redaction.typeLabel },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
legalOptions: LegalBasisOption[] = [];
|
legalOptions: LegalBasisOption[] = [];
|
||||||
|
|||||||
@ -69,19 +69,10 @@ export class RedactRecommendationDialogComponent
|
|||||||
reason: [null],
|
reason: [null],
|
||||||
});
|
});
|
||||||
|
|
||||||
readonly tableColumns = [
|
readonly tableColumns: ValueColumn[] = [{ label: 'Value' }, { label: 'Type' }];
|
||||||
{
|
|
||||||
label: 'Value',
|
|
||||||
show: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Type',
|
|
||||||
show: true,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
readonly tableData: ValueColumn[][] = this.data.annotations.map(redaction => [
|
readonly tableData: ValueColumn[][] = this.data.annotations.map(redaction => [
|
||||||
{ label: redaction.value, show: true, bold: true },
|
{ label: redaction.value, bold: true },
|
||||||
{ label: redaction.typeLabel, show: true },
|
{ label: redaction.typeLabel },
|
||||||
]);
|
]);
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
|||||||
@ -105,25 +105,19 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
|
|||||||
readonly selectedOption = toSignal(this.form.get('option').valueChanges.pipe(map(value => value.value)));
|
readonly selectedOption = toSignal(this.form.get('option').valueChanges.pipe(map(value => value.value)));
|
||||||
readonly isFalsePositive = computed(() => this.selectedOption() === RemoveRedactionOptions.FALSE_POSITIVE);
|
readonly isFalsePositive = computed(() => this.selectedOption() === RemoveRedactionOptions.FALSE_POSITIVE);
|
||||||
readonly tableColumns = computed<ValueColumn[]>(() => [
|
readonly tableColumns = computed<ValueColumn[]>(() => [
|
||||||
{
|
{ label: 'Value' },
|
||||||
label: 'Value',
|
{ label: 'Type' },
|
||||||
show: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Type',
|
|
||||||
show: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: 'Context',
|
label: 'Context',
|
||||||
show: this.isFalsePositive(),
|
hide: !this.isFalsePositive(),
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
readonly tableData = computed<ValueColumn[][]>(() =>
|
readonly tableData = computed<ValueColumn[][]>(() =>
|
||||||
this.data.redactions.map((redaction, index) => [
|
this.data.redactions.map((redaction, index) => [
|
||||||
{ label: redaction.value, show: true, bold: true },
|
{ label: redaction.value, bold: true },
|
||||||
{ label: redaction.typeLabel, show: true },
|
{ label: redaction.typeLabel },
|
||||||
{ label: this.data.falsePositiveContext[index], show: this.isFalsePositive() },
|
{ label: this.data.falsePositiveContext[index], hide: !this.isFalsePositive() },
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { ChangeDetectorRef, Component, HostBinding, Injector, Input, OnChanges, Optional, ViewChild } from '@angular/core';
|
import { ChangeDetectorRef, Component, HostBinding, Injector, Input, OnChanges, Optional, signal, ViewChild } from '@angular/core';
|
||||||
import { toObservable } from '@angular/core/rxjs-interop';
|
import { toObservable } from '@angular/core/rxjs-interop';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||||
@ -13,7 +13,7 @@ import {
|
|||||||
} from '@iqser/common-ui';
|
} from '@iqser/common-ui';
|
||||||
import { getCurrentUser } from '@iqser/common-ui/lib/users';
|
import { getCurrentUser } from '@iqser/common-ui/lib/users';
|
||||||
import { IqserTooltipPositions } from '@iqser/common-ui/lib/utils';
|
import { IqserTooltipPositions } from '@iqser/common-ui/lib/utils';
|
||||||
import { Action, ActionTypes, Dossier, File, ProcessingFileStatuses, User } from '@red/domain';
|
import { Action, ActionTypes, ApproveResponse, Dossier, File, ProcessingFileStatuses, User } from '@red/domain';
|
||||||
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
||||||
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
|
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
|
||||||
import { FileManagementService } from '@services/files/file-management.service';
|
import { FileManagementService } from '@services/files/file-management.service';
|
||||||
@ -36,6 +36,7 @@ import { FileAssignService } from '../../services/file-assign.service';
|
|||||||
import { ProcessingIndicatorComponent } from '@shared/components/processing-indicator/processing-indicator.component';
|
import { ProcessingIndicatorComponent } from '@shared/components/processing-indicator/processing-indicator.component';
|
||||||
import { StatusBarComponent } from '@common-ui/shared';
|
import { StatusBarComponent } from '@common-ui/shared';
|
||||||
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
||||||
|
import { ApproveWarningDetailsComponent } from '@shared/components/approve-warning-details/approve-warning-details.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'redaction-file-actions',
|
selector: 'redaction-file-actions',
|
||||||
@ -302,20 +303,22 @@ export class FileActionsComponent implements OnChanges {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async setFileApproved() {
|
async setFileApproved() {
|
||||||
if (!this.file.analysisRequired && !this.file.hasUpdates) {
|
this._loadingService.start();
|
||||||
await this.#setFileApproved();
|
const approvalResponse: ApproveResponse = (await this._filesService.getApproveWarnings([this.file]))[0];
|
||||||
|
this._loadingService.stop();
|
||||||
|
if (!approvalResponse.hasWarnings) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const data: IConfirmationDialogData = {
|
const data: IConfirmationDialogData = {
|
||||||
title: this.file.analysisRequired
|
title: _('confirmation-dialog.approve-file.title'),
|
||||||
? _('confirmation-dialog.approve-file-without-analysis.title')
|
question: _('confirmation-dialog.approve-file.question'),
|
||||||
: _('confirmation-dialog.approve-file.title'),
|
translateParams: { questionLength: 1 },
|
||||||
question: this.file.analysisRequired
|
confirmationText: _('confirmation-dialog.approve-file.confirmationText'),
|
||||||
? _('confirmation-dialog.approve-file-without-analysis.question')
|
denyText: _('confirmation-dialog.approve-file.denyText'),
|
||||||
: _('confirmation-dialog.approve-file.question'),
|
component: ApproveWarningDetailsComponent,
|
||||||
confirmationText: this.file.analysisRequired ? _('confirmation-dialog.approve-file-without-analysis.confirmationText') : null,
|
componentInputs: { data: signal([approvalResponse]), files: signal([this.file]) },
|
||||||
denyText: this.file.analysisRequired ? _('confirmation-dialog.approve-file-without-analysis.denyText') : null,
|
cancelButtonPrimary: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
this._dialogService.openDialog('confirm', data, () => this.#setFileApproved());
|
this._dialogService.openDialog('confirm', data, () => this.#setFileApproved());
|
||||||
|
|||||||
@ -0,0 +1,9 @@
|
|||||||
|
<div class="scrollable">
|
||||||
|
@for (file of data(); track file) {
|
||||||
|
<redaction-warning-details-panel
|
||||||
|
[warnings]="file.fileWarnings"
|
||||||
|
[filename]="fileNamesByIds()[file.fileId]"
|
||||||
|
[openByDefault]="shouldPanelOpenDefault()"
|
||||||
|
></redaction-warning-details-panel>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
@use 'common-mixins';
|
||||||
|
|
||||||
|
.scrollable {
|
||||||
|
overflow-y: auto;
|
||||||
|
max-height: calc(5 * 50px);
|
||||||
|
@include common-mixins.scroll-bar;
|
||||||
|
|
||||||
|
padding-left: 2px;
|
||||||
|
padding-right: 11px;
|
||||||
|
}
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
import { Component, computed, input } from '@angular/core';
|
||||||
|
import { ApproveResponse, File } from '@red/domain';
|
||||||
|
import { SelectedAnnotationsTableComponent } from '../../../file-preview/components/selected-annotations-table/selected-annotations-table.component';
|
||||||
|
import { MatExpansionPanel, MatExpansionPanelHeader } from '@angular/material/expansion';
|
||||||
|
import { KeyValuePipe, NgStyle } from '@angular/common';
|
||||||
|
import { WarningDetailsPanelComponent } from '@shared/components/warning-details-panel/warning-details-panel.component';
|
||||||
|
import { CdkFixedSizeVirtualScroll, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'redaction-approve-warning-details',
|
||||||
|
standalone: true,
|
||||||
|
imports: [
|
||||||
|
SelectedAnnotationsTableComponent,
|
||||||
|
MatExpansionPanel,
|
||||||
|
MatExpansionPanelHeader,
|
||||||
|
KeyValuePipe,
|
||||||
|
WarningDetailsPanelComponent,
|
||||||
|
CdkVirtualScrollViewport,
|
||||||
|
CdkFixedSizeVirtualScroll,
|
||||||
|
NgStyle,
|
||||||
|
],
|
||||||
|
templateUrl: './approve-warning-details.component.html',
|
||||||
|
styleUrl: './approve-warning-details.component.scss',
|
||||||
|
})
|
||||||
|
export class ApproveWarningDetailsComponent {
|
||||||
|
readonly data = input.required<ApproveResponse[]>();
|
||||||
|
readonly files = input.required<File[]>();
|
||||||
|
|
||||||
|
readonly fileNamesByIds = computed(() => this.files().reduce((acc, file) => ({ ...acc, [file.id]: file.filename }), {}));
|
||||||
|
readonly shouldPanelOpenDefault = computed(() => this.files().length === 1);
|
||||||
|
}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
<mat-expansion-panel [expanded]="openByDefault()" togglePosition="before">
|
||||||
|
<mat-expansion-panel-header>{{ filename() }}</mat-expansion-panel-header>
|
||||||
|
<redaction-selected-annotations-table
|
||||||
|
[columns]="tableColumns()"
|
||||||
|
[data]="tableData()"
|
||||||
|
[staticColumns]="true"
|
||||||
|
></redaction-selected-annotations-table>
|
||||||
|
</mat-expansion-panel>
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
mat-expansion-panel {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
import { Component, computed, inject, input } from '@angular/core';
|
||||||
|
import {
|
||||||
|
SelectedAnnotationsTableComponent,
|
||||||
|
ValueColumn,
|
||||||
|
} from '../../../file-preview/components/selected-annotations-table/selected-annotations-table.component';
|
||||||
|
import { WarningModel } from '@red/domain';
|
||||||
|
import { MatExpansionPanel, MatExpansionPanelHeader } from '@angular/material/expansion';
|
||||||
|
import { approvalWarningReasonTranslations } from '@translations/approval-warning-reason-translations';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'redaction-warning-details-panel',
|
||||||
|
standalone: true,
|
||||||
|
imports: [MatExpansionPanel, MatExpansionPanelHeader, SelectedAnnotationsTableComponent],
|
||||||
|
templateUrl: './warning-details-panel.component.html',
|
||||||
|
styleUrl: './warning-details-panel.component.scss',
|
||||||
|
})
|
||||||
|
export class WarningDetailsPanelComponent {
|
||||||
|
readonly #translateService = inject(TranslateService);
|
||||||
|
readonly warnings = input<WarningModel[]>();
|
||||||
|
readonly filename = input<string>();
|
||||||
|
readonly openByDefault = input<boolean>();
|
||||||
|
readonly tableColumns = computed<ValueColumn[]>(() => [
|
||||||
|
{ label: 'Value' },
|
||||||
|
{ label: 'Type' },
|
||||||
|
{ label: 'Page' },
|
||||||
|
{ label: 'Warning Reason' },
|
||||||
|
]);
|
||||||
|
readonly tableData = computed<ValueColumn[][]>(() =>
|
||||||
|
this.warnings().map(warning => [
|
||||||
|
{ label: warning.value, bold: true },
|
||||||
|
{ label: warning.type },
|
||||||
|
{ label: warning.pages.join(',') },
|
||||||
|
{ label: this.#translateService.instant(approvalWarningReasonTranslations[warning.warningType]) },
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -1,7 +1,7 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { EntitiesService, isArray, QueryParam } from '@iqser/common-ui';
|
import { EntitiesService, isArray, QueryParam } from '@iqser/common-ui';
|
||||||
import { List, mapEach } from '@iqser/common-ui/lib/utils';
|
import { List, mapEach } from '@iqser/common-ui/lib/utils';
|
||||||
import { File, IFile } from '@red/domain';
|
import { ApproveResponse, File, IFile } from '@red/domain';
|
||||||
import { UserService } from '@users/user.service';
|
import { UserService } from '@users/user.service';
|
||||||
import { NGXLogger } from 'ngx-logger';
|
import { NGXLogger } from 'ngx-logger';
|
||||||
import { firstValueFrom } from 'rxjs';
|
import { firstValueFrom } from 'rxjs';
|
||||||
@ -70,7 +70,13 @@ export class FilesService extends EntitiesService<IFile, File> {
|
|||||||
|
|
||||||
async setApproved(files: File | List<File>) {
|
async setApproved(files: File | List<File>) {
|
||||||
const _files = asList(files);
|
const _files = asList(files);
|
||||||
return this.#makePost(_files, `${this._defaultModelPath}/approved/${_files[0].dossierId}/bulk`);
|
return this.#makePost(_files, `${this._defaultModelPath}/approved/${_files[0].dossierId}/bulk`, [{ key: 'force', value: true }]);
|
||||||
|
}
|
||||||
|
|
||||||
|
async getApproveWarnings(files: File[]) {
|
||||||
|
const filesIds = files.map(file => file.id);
|
||||||
|
const url = `${this._defaultModelPath}/approved/${files[0].dossierId}/bulk`;
|
||||||
|
return await firstValueFrom<ApproveResponse[]>(this._post(filesIds, url));
|
||||||
}
|
}
|
||||||
|
|
||||||
async setUnderReview(files: File | List<File>) {
|
async setUnderReview(files: File | List<File>) {
|
||||||
|
|||||||
@ -0,0 +1,8 @@
|
|||||||
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||||
|
import { WarningType } from '@red/domain';
|
||||||
|
|
||||||
|
export const approvalWarningReasonTranslations: Record<string, string> = {
|
||||||
|
[WarningType.PENDING_CHANGE]: _('confirmation-dialog.approve-file.warning-reason.pending-changes'),
|
||||||
|
[WarningType.LEGAL_BASIS_MISSING]: _('confirmation-dialog.approve-file.warning-reason.legal-basis-missing'),
|
||||||
|
[WarningType.UNMAPPED_JUSTIFICATION]: _('confirmation-dialog.approve-file.warning-reason.unmapped-justification'),
|
||||||
|
};
|
||||||
@ -242,7 +242,6 @@
|
|||||||
"label": "Nur hier hinzufügen"
|
"label": "Nur hier hinzufügen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"selected-text": "Ausgewählter Text:",
|
|
||||||
"type": "Typ",
|
"type": "Typ",
|
||||||
"type-placeholder": "Typ auswählen..."
|
"type-placeholder": "Typ auswählen..."
|
||||||
},
|
},
|
||||||
@ -276,9 +275,6 @@
|
|||||||
"watermarks": "Wasserzeichen"
|
"watermarks": "Wasserzeichen"
|
||||||
},
|
},
|
||||||
"analysis-disabled": "",
|
"analysis-disabled": "",
|
||||||
"annotation": {
|
|
||||||
"pending": "(Analyse steht aus)"
|
|
||||||
},
|
|
||||||
"annotation-actions": {
|
"annotation-actions": {
|
||||||
"accept-recommendation": {
|
"accept-recommendation": {
|
||||||
"label": "Empfehlung annehmen"
|
"label": "Empfehlung annehmen"
|
||||||
@ -334,14 +330,14 @@
|
|||||||
"error": "Rekategorisierung des Bilds fehlgeschlagen: {error}",
|
"error": "Rekategorisierung des Bilds fehlgeschlagen: {error}",
|
||||||
"success": "Bild wurde einer neuen Kategorie zugeordnet."
|
"success": "Bild wurde einer neuen Kategorie zugeordnet."
|
||||||
},
|
},
|
||||||
"remove": {
|
|
||||||
"error": "Entfernen der Schwärzung fehlgeschlagen: {error}",
|
|
||||||
"success": "Schwärzung wurde entfernt"
|
|
||||||
},
|
|
||||||
"remove-hint": {
|
"remove-hint": {
|
||||||
"error": "Entfernen des Hinweises fehlgeschlagen: {error}",
|
"error": "Entfernen des Hinweises fehlgeschlagen: {error}",
|
||||||
"success": "Hinweis wurde entfernt"
|
"success": "Hinweis wurde entfernt"
|
||||||
},
|
},
|
||||||
|
"remove": {
|
||||||
|
"error": "Entfernen der Schwärzung fehlgeschlagen: {error}",
|
||||||
|
"success": "Schwärzung wurde entfernt"
|
||||||
|
},
|
||||||
"undo": {
|
"undo": {
|
||||||
"error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}",
|
"error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}",
|
||||||
"success": "Rücksetzung erfolgreich"
|
"success": "Rücksetzung erfolgreich"
|
||||||
@ -354,15 +350,15 @@
|
|||||||
"remove-highlights": {
|
"remove-highlights": {
|
||||||
"label": "Ausgewählte Markierungen entfernen"
|
"label": "Ausgewählte Markierungen entfernen"
|
||||||
},
|
},
|
||||||
"resize": {
|
|
||||||
"label": "Größe ändern"
|
|
||||||
},
|
|
||||||
"resize-accept": {
|
"resize-accept": {
|
||||||
"label": "Neue Größe speichern"
|
"label": "Neue Größe speichern"
|
||||||
},
|
},
|
||||||
"resize-cancel": {
|
"resize-cancel": {
|
||||||
"label": "Größenänderung abbrechen"
|
"label": "Größenänderung abbrechen"
|
||||||
},
|
},
|
||||||
|
"resize": {
|
||||||
|
"label": "Größe ändern"
|
||||||
|
},
|
||||||
"see-references": {
|
"see-references": {
|
||||||
"label": "Referenzen anzeigen"
|
"label": "Referenzen anzeigen"
|
||||||
},
|
},
|
||||||
@ -396,6 +392,9 @@
|
|||||||
"skipped": "Ignorierte Schwärzung",
|
"skipped": "Ignorierte Schwärzung",
|
||||||
"text-highlight": "Markierung"
|
"text-highlight": "Markierung"
|
||||||
},
|
},
|
||||||
|
"annotation": {
|
||||||
|
"pending": "(Analyse steht aus)"
|
||||||
|
},
|
||||||
"annotations": "Annotationen",
|
"annotations": "Annotationen",
|
||||||
"archived-dossiers-listing": {
|
"archived-dossiers-listing": {
|
||||||
"no-data": {
|
"no-data": {
|
||||||
@ -640,24 +639,15 @@
|
|||||||
},
|
},
|
||||||
"confirmation-dialog": {
|
"confirmation-dialog": {
|
||||||
"approve-file": {
|
"approve-file": {
|
||||||
"question": "Dieses Dokument enthält ungesehene Änderungen, die sich durch die Reanalyse ergeben haben.<br><br>Möchten Sie es trotzdem freigeben?",
|
"confirmationText": "Approve anyway",
|
||||||
"title": "Warnung!"
|
"denyText": "No, cancel",
|
||||||
},
|
"question": "Do you still want to approve the {questionLength, plural, one{document} other{documents}}?",
|
||||||
"approve-file-without-analysis": {
|
"title": "Approval warning",
|
||||||
"confirmationText": "Ohne Analyse freigeben",
|
"warning-reason": {
|
||||||
"denyText": "Abbrechen",
|
"legal-basis-missing": "Legal basis missing",
|
||||||
"question": "Analyse zur Erkennung neuer Schwärzungen erforderlich.",
|
"pending-changes": "Pending Changes",
|
||||||
"title": "Warnung!"
|
"unmapped-justification": "Unmapped justification"
|
||||||
},
|
}
|
||||||
"approve-multiple-files": {
|
|
||||||
"question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen, die im Zuge einer Reanalyse hinzugefügt wurden.<br><br>Möchen Sie die Dateien wirklich freigeben?",
|
|
||||||
"title": "Warnung!"
|
|
||||||
},
|
|
||||||
"approve-multiple-files-without-analysis": {
|
|
||||||
"confirmationText": "Ohne Analyse freigeben",
|
|
||||||
"denyText": "Abbrechen",
|
|
||||||
"question": "Für mindestens eine Datei ist ein Analyselauf zur Erkennung neuer Schwärzungen erforderlich.",
|
|
||||||
"title": "Warnung"
|
|
||||||
},
|
},
|
||||||
"assign-file-to-me": {
|
"assign-file-to-me": {
|
||||||
"question": {
|
"question": {
|
||||||
@ -1028,13 +1018,13 @@
|
|||||||
"recent": "Neu ({hours} h)",
|
"recent": "Neu ({hours} h)",
|
||||||
"unassigned": "Keinem Bearbeiter zugewiesen"
|
"unassigned": "Keinem Bearbeiter zugewiesen"
|
||||||
},
|
},
|
||||||
"reanalyse": {
|
|
||||||
"action": "Datei analysieren"
|
|
||||||
},
|
|
||||||
"reanalyse-dossier": {
|
"reanalyse-dossier": {
|
||||||
"error": "Einplanung der Dateien für die Reanalyse fehlgeschlagen. Bitte versuchen Sie es noch einmal.",
|
"error": "Einplanung der Dateien für die Reanalyse fehlgeschlagen. Bitte versuchen Sie es noch einmal.",
|
||||||
"success": "Dateien für Reanalyse vorgesehen."
|
"success": "Dateien für Reanalyse vorgesehen."
|
||||||
},
|
},
|
||||||
|
"reanalyse": {
|
||||||
|
"action": "Datei analysieren"
|
||||||
|
},
|
||||||
"report-download": "",
|
"report-download": "",
|
||||||
"start-auto-analysis": "Auto-Analyse aktivieren",
|
"start-auto-analysis": "Auto-Analyse aktivieren",
|
||||||
"stop-auto-analysis": "Auto-Analyse anhalten",
|
"stop-auto-analysis": "Auto-Analyse anhalten",
|
||||||
@ -1104,14 +1094,6 @@
|
|||||||
"total-documents": "Dokumente",
|
"total-documents": "Dokumente",
|
||||||
"total-people": "<strong>{count}</strong> {count, plural, one{Benutzer} other {Benutzer}}"
|
"total-people": "<strong>{count}</strong> {count, plural, one{Benutzer} other {Benutzer}}"
|
||||||
},
|
},
|
||||||
"dossier-templates": {
|
|
||||||
"label": "Dossier-Vorlagen",
|
|
||||||
"status": {
|
|
||||||
"active": "Aktiv",
|
|
||||||
"inactive": "Inaktiv",
|
|
||||||
"incomplete": "Unvollständig"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dossier-templates-listing": {
|
"dossier-templates-listing": {
|
||||||
"action": {
|
"action": {
|
||||||
"clone": "Vorlage klonen",
|
"clone": "Vorlage klonen",
|
||||||
@ -1146,6 +1128,14 @@
|
|||||||
"title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}"
|
"title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"dossier-templates": {
|
||||||
|
"label": "Dossier-Vorlagen",
|
||||||
|
"status": {
|
||||||
|
"active": "Aktiv",
|
||||||
|
"inactive": "Inaktiv",
|
||||||
|
"incomplete": "Unvollständig"
|
||||||
|
}
|
||||||
|
},
|
||||||
"dossier-watermark-selector": {
|
"dossier-watermark-selector": {
|
||||||
"heading": "Wasserzeichen auf Dokumenten",
|
"heading": "Wasserzeichen auf Dokumenten",
|
||||||
"no-watermark": "Kein Wasserzeichen in der Dossier-Vorlage verfügbar:<br>Bitten Sie Ihren Admin, eines zu konfigurieren.",
|
"no-watermark": "Kein Wasserzeichen in der Dossier-Vorlage verfügbar:<br>Bitten Sie Ihren Admin, eines zu konfigurieren.",
|
||||||
@ -1341,15 +1331,6 @@
|
|||||||
"title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}"
|
"title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"entity": {
|
|
||||||
"info": {
|
|
||||||
"actions": {
|
|
||||||
"revert": "Zurücksetzen",
|
|
||||||
"save": "Änderungen speichern"
|
|
||||||
},
|
|
||||||
"heading": "Entität bearbeiten"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"entity-rules-screen": {
|
"entity-rules-screen": {
|
||||||
"error": {
|
"error": {
|
||||||
"generic": "Fehler: Aktualisierung der Entitätsregeln fehlgeschlagen."
|
"generic": "Fehler: Aktualisierung der Entitätsregeln fehlgeschlagen."
|
||||||
@ -1363,19 +1344,28 @@
|
|||||||
"title": "Entitätsregeln-Editor",
|
"title": "Entitätsregeln-Editor",
|
||||||
"warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} in Regeln gefunden"
|
"warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} in Regeln gefunden"
|
||||||
},
|
},
|
||||||
|
"entity": {
|
||||||
|
"info": {
|
||||||
|
"actions": {
|
||||||
|
"revert": "Zurücksetzen",
|
||||||
|
"save": "Änderungen speichern"
|
||||||
|
},
|
||||||
|
"heading": "Entität bearbeiten"
|
||||||
|
}
|
||||||
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"deleted-entity": {
|
"deleted-entity": {
|
||||||
"dossier": {
|
"dossier": {
|
||||||
"action": "Zurück zur Übersicht",
|
"action": "Zurück zur Übersicht",
|
||||||
"label": "Dieses Dossier wurde gelöscht!"
|
"label": "Dieses Dossier wurde gelöscht!"
|
||||||
},
|
},
|
||||||
"file": {
|
|
||||||
"action": "Zurück zum Dossier",
|
|
||||||
"label": "Diese Datei wurde gelöscht!"
|
|
||||||
},
|
|
||||||
"file-dossier": {
|
"file-dossier": {
|
||||||
"action": "Zurück zur Übersicht",
|
"action": "Zurück zur Übersicht",
|
||||||
"label": "Das Dossier dieser Datei wurde gelöscht!"
|
"label": "Das Dossier dieser Datei wurde gelöscht!"
|
||||||
|
},
|
||||||
|
"file": {
|
||||||
|
"action": "Zurück zum Dossier",
|
||||||
|
"label": "Diese Datei wurde gelöscht!"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"file-preview": {
|
"file-preview": {
|
||||||
@ -1393,12 +1383,6 @@
|
|||||||
},
|
},
|
||||||
"exact-date": "{day}. {month} {year} um {hour}:{minute} Uhr",
|
"exact-date": "{day}. {month} {year} um {hour}:{minute} Uhr",
|
||||||
"file": "Datei",
|
"file": "Datei",
|
||||||
"file-attribute": {
|
|
||||||
"update": {
|
|
||||||
"error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.",
|
|
||||||
"success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"file-attribute-encoding-types": {
|
"file-attribute-encoding-types": {
|
||||||
"ascii": "ASCII",
|
"ascii": "ASCII",
|
||||||
"iso": "ISO-8859-1",
|
"iso": "ISO-8859-1",
|
||||||
@ -1409,6 +1393,12 @@
|
|||||||
"number": "Nummer",
|
"number": "Nummer",
|
||||||
"text": "Freier Text"
|
"text": "Freier Text"
|
||||||
},
|
},
|
||||||
|
"file-attribute": {
|
||||||
|
"update": {
|
||||||
|
"error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.",
|
||||||
|
"success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert."
|
||||||
|
}
|
||||||
|
},
|
||||||
"file-attributes-configurations": {
|
"file-attributes-configurations": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"form": {
|
"form": {
|
||||||
@ -1626,15 +1616,6 @@
|
|||||||
"csv": "Die Datei-Attribute wurden erfolgreich aus der hochgeladenen CSV-Datei importiert."
|
"csv": "Die Datei-Attribute wurden erfolgreich aus der hochgeladenen CSV-Datei importiert."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"filter": {
|
|
||||||
"analysis": "Analyse erforderlich",
|
|
||||||
"comment": "Kommentare",
|
|
||||||
"hint": "Nur Hinweise",
|
|
||||||
"image": "Bilder",
|
|
||||||
"none": "Keine Annotationen",
|
|
||||||
"redaction": "Schwärzungen",
|
|
||||||
"updated": "Aktualisiert"
|
|
||||||
},
|
|
||||||
"filter-menu": {
|
"filter-menu": {
|
||||||
"filter-options": "Filteroptionen",
|
"filter-options": "Filteroptionen",
|
||||||
"filter-types": "Filter",
|
"filter-types": "Filter",
|
||||||
@ -1644,6 +1625,15 @@
|
|||||||
"unseen-pages": "Nur Annotationen auf ungesehenen Seiten",
|
"unseen-pages": "Nur Annotationen auf ungesehenen Seiten",
|
||||||
"with-comments": "Nur Annotationen mit Kommentaren"
|
"with-comments": "Nur Annotationen mit Kommentaren"
|
||||||
},
|
},
|
||||||
|
"filter": {
|
||||||
|
"analysis": "Analyse erforderlich",
|
||||||
|
"comment": "Kommentare",
|
||||||
|
"hint": "Nur Hinweise",
|
||||||
|
"image": "Bilder",
|
||||||
|
"none": "Keine Annotationen",
|
||||||
|
"redaction": "Schwärzungen",
|
||||||
|
"updated": "Aktualisiert"
|
||||||
|
},
|
||||||
"filters": {
|
"filters": {
|
||||||
"assigned-people": "Bearbeiter",
|
"assigned-people": "Bearbeiter",
|
||||||
"documents-status": "Dokumentenstatus",
|
"documents-status": "Dokumentenstatus",
|
||||||
@ -1922,13 +1912,6 @@
|
|||||||
"user-promoted-to-approver": "<b>{user}</b> wurde im Dossier <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> zum Genehmiger ernannt!",
|
"user-promoted-to-approver": "<b>{user}</b> wurde im Dossier <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> zum Genehmiger ernannt!",
|
||||||
"user-removed-as-dossier-member": "<b>{user}</b> wurde als Mitglied von: <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> entfernt!"
|
"user-removed-as-dossier-member": "<b>{user}</b> wurde als Mitglied von: <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> entfernt!"
|
||||||
},
|
},
|
||||||
"notifications": {
|
|
||||||
"button-text": "Benachrichtigungen",
|
|
||||||
"deleted-dossier": "Gelöschtes Dossier",
|
|
||||||
"label": "Benachrichtigungen",
|
|
||||||
"mark-all-as-read": "Alle als gelesen markieren",
|
|
||||||
"mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren"
|
|
||||||
},
|
|
||||||
"notifications-screen": {
|
"notifications-screen": {
|
||||||
"category": {
|
"category": {
|
||||||
"email-notifications": "E-Mail-Benachrichtigungen",
|
"email-notifications": "E-Mail-Benachrichtigungen",
|
||||||
@ -1942,6 +1925,7 @@
|
|||||||
"dossier": "Benachrichtigungen zu Dossiers",
|
"dossier": "Benachrichtigungen zu Dossiers",
|
||||||
"other": "Andere Benachrichtigungen"
|
"other": "Andere Benachrichtigungen"
|
||||||
},
|
},
|
||||||
|
"options-title": "Wählen Sie aus, bei welchen Aktivitäten Sie benachrichtigt werden möchten",
|
||||||
"options": {
|
"options": {
|
||||||
"ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen werde",
|
"ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen werde",
|
||||||
"ASSIGN_REVIEWER": "Wenn ich einem Dokument als Prüfer zugewiesen werde",
|
"ASSIGN_REVIEWER": "Wenn ich einem Dokument als Prüfer zugewiesen werde",
|
||||||
@ -1959,7 +1943,6 @@
|
|||||||
"USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde",
|
"USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde",
|
||||||
"USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere"
|
"USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere"
|
||||||
},
|
},
|
||||||
"options-title": "Wählen Sie aus, bei welchen Aktivitäten Sie benachrichtigt werden möchten",
|
|
||||||
"schedule": {
|
"schedule": {
|
||||||
"daily": "Tägliche Zusammenfassung",
|
"daily": "Tägliche Zusammenfassung",
|
||||||
"instant": "Sofort",
|
"instant": "Sofort",
|
||||||
@ -1967,6 +1950,13 @@
|
|||||||
},
|
},
|
||||||
"title": "Benachrichtigungseinstellungen"
|
"title": "Benachrichtigungseinstellungen"
|
||||||
},
|
},
|
||||||
|
"notifications": {
|
||||||
|
"button-text": "Benachrichtigungen",
|
||||||
|
"deleted-dossier": "Gelöschtes Dossier",
|
||||||
|
"label": "Benachrichtigungen",
|
||||||
|
"mark-all-as-read": "Alle als gelesen markieren",
|
||||||
|
"mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren"
|
||||||
|
},
|
||||||
"ocr": {
|
"ocr": {
|
||||||
"confirmation-dialog": {
|
"confirmation-dialog": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
@ -2058,16 +2048,16 @@
|
|||||||
"warnings-label": "Dialoge und Meldungen",
|
"warnings-label": "Dialoge und Meldungen",
|
||||||
"warnings-subtitle": "„Nicht mehr anzeigen“-Optionen"
|
"warnings-subtitle": "„Nicht mehr anzeigen“-Optionen"
|
||||||
},
|
},
|
||||||
"processing": {
|
|
||||||
"basic": "Verarbeitung läuft",
|
|
||||||
"ocr": "OCR"
|
|
||||||
},
|
|
||||||
"processing-status": {
|
"processing-status": {
|
||||||
"ocr": "OCR",
|
"ocr": "OCR",
|
||||||
"pending": "Ausstehend",
|
"pending": "Ausstehend",
|
||||||
"processed": "Verarbeitet",
|
"processed": "Verarbeitet",
|
||||||
"processing": "Verarbeitung läuft"
|
"processing": "Verarbeitung läuft"
|
||||||
},
|
},
|
||||||
|
"processing": {
|
||||||
|
"basic": "Verarbeitung läuft",
|
||||||
|
"ocr": "OCR"
|
||||||
|
},
|
||||||
"readonly": "Lesemodus",
|
"readonly": "Lesemodus",
|
||||||
"readonly-archived": "Lesemodus (archiviert)",
|
"readonly-archived": "Lesemodus (archiviert)",
|
||||||
"redact-text": {
|
"redact-text": {
|
||||||
@ -2303,12 +2293,6 @@
|
|||||||
"red-user-admin": "Benutzeradmin",
|
"red-user-admin": "Benutzeradmin",
|
||||||
"regular": "regulärer Benutzer"
|
"regular": "regulärer Benutzer"
|
||||||
},
|
},
|
||||||
"search": {
|
|
||||||
"active-dossiers": "Dokumente in aktiven Dossiers",
|
|
||||||
"all-dossiers": "Alle Dokumente",
|
|
||||||
"placeholder": "Dokumente durchsuchen...",
|
|
||||||
"this-dossier": "In diesem Dossier"
|
|
||||||
},
|
|
||||||
"search-screen": {
|
"search-screen": {
|
||||||
"cols": {
|
"cols": {
|
||||||
"assignee": "Bearbeiter",
|
"assignee": "Bearbeiter",
|
||||||
@ -2332,6 +2316,12 @@
|
|||||||
"no-match": "Der Suchbegriff wurde in keinem der Dokumente gefunden.",
|
"no-match": "Der Suchbegriff wurde in keinem der Dokumente gefunden.",
|
||||||
"table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}"
|
"table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}"
|
||||||
},
|
},
|
||||||
|
"search": {
|
||||||
|
"active-dossiers": "Dokumente in aktiven Dossiers",
|
||||||
|
"all-dossiers": "Alle Dokumente",
|
||||||
|
"placeholder": "Dokumente durchsuchen...",
|
||||||
|
"this-dossier": "In diesem Dossier"
|
||||||
|
},
|
||||||
"seconds": "Sekunden",
|
"seconds": "Sekunden",
|
||||||
"size": "Größe",
|
"size": "Größe",
|
||||||
"smtp-auth-config": {
|
"smtp-auth-config": {
|
||||||
|
|||||||
@ -242,7 +242,6 @@
|
|||||||
"label": "Add hint only here"
|
"label": "Add hint only here"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"selected-text": "Selected text:",
|
|
||||||
"type": "Type",
|
"type": "Type",
|
||||||
"type-placeholder": "Select type..."
|
"type-placeholder": "Select type..."
|
||||||
},
|
},
|
||||||
@ -639,25 +638,16 @@
|
|||||||
"warning": "Warning: This action cannot be undone!"
|
"warning": "Warning: This action cannot be undone!"
|
||||||
},
|
},
|
||||||
"confirmation-dialog": {
|
"confirmation-dialog": {
|
||||||
"approve-file-without-analysis": {
|
|
||||||
"confirmationText": "Approve without analysis",
|
|
||||||
"denyText": "Cancel",
|
|
||||||
"question": "Analysis required to detect new redactions.",
|
|
||||||
"title": "Warning!"
|
|
||||||
},
|
|
||||||
"approve-file": {
|
"approve-file": {
|
||||||
"question": "This document contains unseen changes that have been added during the reanalysis.<br><br>Do you still want to approve it?",
|
"confirmationText": "Approve anyway",
|
||||||
"title": "Warning!"
|
"denyText": "No, cancel",
|
||||||
},
|
"question": "Do you still want to approve the {questionLength, plural, one{document} other{documents}}?",
|
||||||
"approve-multiple-files-without-analysis": {
|
"title": "Approval warning",
|
||||||
"confirmationText": "Approve without analysis",
|
"warning-reason": {
|
||||||
"denyText": "Cancel",
|
"legal-basis-missing": "Legal basis missing",
|
||||||
"question": "Analysis required to detect new redactions for at least one file.",
|
"pending-changes": "Pending Changes",
|
||||||
"title": "Warning"
|
"unmapped-justification": "Unmapped justification"
|
||||||
},
|
}
|
||||||
"approve-multiple-files": {
|
|
||||||
"question": "At least one of the selected files contains unseen changes that have been added during the reanalysis.<br><br>Do you still want to approve them?",
|
|
||||||
"title": "Warning!"
|
|
||||||
},
|
},
|
||||||
"assign-file-to-me": {
|
"assign-file-to-me": {
|
||||||
"question": {
|
"question": {
|
||||||
|
|||||||
@ -242,7 +242,6 @@
|
|||||||
"label": "Add hint only here"
|
"label": "Add hint only here"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"selected-text": "Selected text:",
|
|
||||||
"type": "Type",
|
"type": "Type",
|
||||||
"type-placeholder": "Select type..."
|
"type-placeholder": "Select type..."
|
||||||
},
|
},
|
||||||
@ -276,9 +275,6 @@
|
|||||||
"watermarks": "Watermarks"
|
"watermarks": "Watermarks"
|
||||||
},
|
},
|
||||||
"analysis-disabled": "Analysis disabled",
|
"analysis-disabled": "Analysis disabled",
|
||||||
"annotation": {
|
|
||||||
"pending": "(Pending analysis)"
|
|
||||||
},
|
|
||||||
"annotation-actions": {
|
"annotation-actions": {
|
||||||
"accept-recommendation": {
|
"accept-recommendation": {
|
||||||
"label": "Empfehlung annehmen"
|
"label": "Empfehlung annehmen"
|
||||||
@ -334,14 +330,14 @@
|
|||||||
"error": "Rekategorisierung des Bildes gescheitert: {error}",
|
"error": "Rekategorisierung des Bildes gescheitert: {error}",
|
||||||
"success": "Bild wurde einer neuen Kategorie zugeordnet."
|
"success": "Bild wurde einer neuen Kategorie zugeordnet."
|
||||||
},
|
},
|
||||||
"remove": {
|
|
||||||
"error": "Fehler beim Entfernen der Schwärzung: {error}",
|
|
||||||
"success": "Schwärzung entfernt!"
|
|
||||||
},
|
|
||||||
"remove-hint": {
|
"remove-hint": {
|
||||||
"error": "Failed to remove hint: {error}",
|
"error": "Failed to remove hint: {error}",
|
||||||
"success": "Hint removed!"
|
"success": "Hint removed!"
|
||||||
},
|
},
|
||||||
|
"remove": {
|
||||||
|
"error": "Fehler beim Entfernen der Schwärzung: {error}",
|
||||||
|
"success": "Schwärzung entfernt!"
|
||||||
|
},
|
||||||
"undo": {
|
"undo": {
|
||||||
"error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}",
|
"error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}",
|
||||||
"success": "erfolgreich Rückgängig gemacht"
|
"success": "erfolgreich Rückgängig gemacht"
|
||||||
@ -354,15 +350,15 @@
|
|||||||
"remove-highlights": {
|
"remove-highlights": {
|
||||||
"label": "Remove selected earmarks"
|
"label": "Remove selected earmarks"
|
||||||
},
|
},
|
||||||
"resize": {
|
|
||||||
"label": "Größe ändern"
|
|
||||||
},
|
|
||||||
"resize-accept": {
|
"resize-accept": {
|
||||||
"label": "Größe speichern"
|
"label": "Größe speichern"
|
||||||
},
|
},
|
||||||
"resize-cancel": {
|
"resize-cancel": {
|
||||||
"label": "Größenänderung abbrechen"
|
"label": "Größenänderung abbrechen"
|
||||||
},
|
},
|
||||||
|
"resize": {
|
||||||
|
"label": "Größe ändern"
|
||||||
|
},
|
||||||
"see-references": {
|
"see-references": {
|
||||||
"label": "See references"
|
"label": "See references"
|
||||||
},
|
},
|
||||||
@ -396,6 +392,9 @@
|
|||||||
"skipped": "Übersprungen",
|
"skipped": "Übersprungen",
|
||||||
"text-highlight": "Earmark"
|
"text-highlight": "Earmark"
|
||||||
},
|
},
|
||||||
|
"annotation": {
|
||||||
|
"pending": "(Pending analysis)"
|
||||||
|
},
|
||||||
"annotations": "Annotations",
|
"annotations": "Annotations",
|
||||||
"archived-dossiers-listing": {
|
"archived-dossiers-listing": {
|
||||||
"no-data": {
|
"no-data": {
|
||||||
@ -640,24 +639,15 @@
|
|||||||
},
|
},
|
||||||
"confirmation-dialog": {
|
"confirmation-dialog": {
|
||||||
"approve-file": {
|
"approve-file": {
|
||||||
"question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?",
|
"confirmationText": "Approve anyway",
|
||||||
"title": "Warnung!"
|
"denyText": "No, cancel",
|
||||||
},
|
"question": "Do you still want to approve the {questionLength, plural, one{document} other{documents}}?",
|
||||||
"approve-file-without-analysis": {
|
"title": "Approval warning",
|
||||||
"confirmationText": "Approve without analysis",
|
"warning-reason": {
|
||||||
"denyText": "Cancel",
|
"legal-basis-missing": "Legal basis missing",
|
||||||
"question": "Analysis required to detect new components.",
|
"pending-changes": "Pending Changes",
|
||||||
"title": "Warning!"
|
"unmapped-justification": "Unmapped justification"
|
||||||
},
|
}
|
||||||
"approve-multiple-files": {
|
|
||||||
"question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?",
|
|
||||||
"title": "Warnung!"
|
|
||||||
},
|
|
||||||
"approve-multiple-files-without-analysis": {
|
|
||||||
"confirmationText": "Approve without analysis",
|
|
||||||
"denyText": "Cancel",
|
|
||||||
"question": "Analysis required to detect new components for at least one file.",
|
|
||||||
"title": "Warning"
|
|
||||||
},
|
},
|
||||||
"assign-file-to-me": {
|
"assign-file-to-me": {
|
||||||
"question": {
|
"question": {
|
||||||
@ -1028,13 +1018,13 @@
|
|||||||
"recent": "Neu ({hours} h)",
|
"recent": "Neu ({hours} h)",
|
||||||
"unassigned": "Niemandem zugewiesen"
|
"unassigned": "Niemandem zugewiesen"
|
||||||
},
|
},
|
||||||
"reanalyse": {
|
|
||||||
"action": "Datei analysieren"
|
|
||||||
},
|
|
||||||
"reanalyse-dossier": {
|
"reanalyse-dossier": {
|
||||||
"error": "Die Dateien konnten nicht für eine Reanalyse eingeplant werden. Bitte versuchen Sie es erneut.",
|
"error": "Die Dateien konnten nicht für eine Reanalyse eingeplant werden. Bitte versuchen Sie es erneut.",
|
||||||
"success": "Dateien für Reanalyse vorgesehen."
|
"success": "Dateien für Reanalyse vorgesehen."
|
||||||
},
|
},
|
||||||
|
"reanalyse": {
|
||||||
|
"action": "Datei analysieren"
|
||||||
|
},
|
||||||
"report-download": "Report download",
|
"report-download": "Report download",
|
||||||
"start-auto-analysis": "Enable auto-analysis",
|
"start-auto-analysis": "Enable auto-analysis",
|
||||||
"stop-auto-analysis": "Stop auto-analysis",
|
"stop-auto-analysis": "Stop auto-analysis",
|
||||||
@ -1104,14 +1094,6 @@
|
|||||||
"total-documents": "Anzahl der Dokumente",
|
"total-documents": "Anzahl der Dokumente",
|
||||||
"total-people": "<strong>{count}</strong> {count, plural, one{user} other {users}}"
|
"total-people": "<strong>{count}</strong> {count, plural, one{user} other {users}}"
|
||||||
},
|
},
|
||||||
"dossier-templates": {
|
|
||||||
"label": "Dossier-Vorlagen",
|
|
||||||
"status": {
|
|
||||||
"active": "Active",
|
|
||||||
"inactive": "Inactive",
|
|
||||||
"incomplete": "Incomplete"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dossier-templates-listing": {
|
"dossier-templates-listing": {
|
||||||
"action": {
|
"action": {
|
||||||
"clone": "Clone template",
|
"clone": "Clone template",
|
||||||
@ -1146,6 +1128,14 @@
|
|||||||
"title": "{length} dossier {length, plural, one{template} other{templates}}"
|
"title": "{length} dossier {length, plural, one{template} other{templates}}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"dossier-templates": {
|
||||||
|
"label": "Dossier-Vorlagen",
|
||||||
|
"status": {
|
||||||
|
"active": "Active",
|
||||||
|
"inactive": "Inactive",
|
||||||
|
"incomplete": "Incomplete"
|
||||||
|
}
|
||||||
|
},
|
||||||
"dossier-watermark-selector": {
|
"dossier-watermark-selector": {
|
||||||
"heading": "Watermarks on documents",
|
"heading": "Watermarks on documents",
|
||||||
"no-watermark": "There is no watermark defined for the dossier template.<br>Contact your app admin to define one.",
|
"no-watermark": "There is no watermark defined for the dossier template.<br>Contact your app admin to define one.",
|
||||||
@ -1341,15 +1331,6 @@
|
|||||||
"title": "{length} {length, plural, one{entity} other{entities}}"
|
"title": "{length} {length, plural, one{entity} other{entities}}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"entity": {
|
|
||||||
"info": {
|
|
||||||
"actions": {
|
|
||||||
"revert": "Revert",
|
|
||||||
"save": "Save changes"
|
|
||||||
},
|
|
||||||
"heading": "Edit entity"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"entity-rules-screen": {
|
"entity-rules-screen": {
|
||||||
"error": {
|
"error": {
|
||||||
"generic": "Something went wrong... Entity rules update failed!"
|
"generic": "Something went wrong... Entity rules update failed!"
|
||||||
@ -1363,19 +1344,28 @@
|
|||||||
"title": "Entity rule editor",
|
"title": "Entity rule editor",
|
||||||
"warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules"
|
"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": {
|
"error": {
|
||||||
"deleted-entity": {
|
"deleted-entity": {
|
||||||
"dossier": {
|
"dossier": {
|
||||||
"action": "Zurück zur Übersicht",
|
"action": "Zurück zur Übersicht",
|
||||||
"label": "Dieses Dossier wurde gelöscht!"
|
"label": "Dieses Dossier wurde gelöscht!"
|
||||||
},
|
},
|
||||||
"file": {
|
|
||||||
"action": "Zurück zum Dossier",
|
|
||||||
"label": "Diese Datei wurde gelöscht!"
|
|
||||||
},
|
|
||||||
"file-dossier": {
|
"file-dossier": {
|
||||||
"action": "Zurück zur Übersicht",
|
"action": "Zurück zur Übersicht",
|
||||||
"label": "Das Dossier dieser Datei wurde gelöscht!"
|
"label": "Das Dossier dieser Datei wurde gelöscht!"
|
||||||
|
},
|
||||||
|
"file": {
|
||||||
|
"action": "Zurück zum Dossier",
|
||||||
|
"label": "Diese Datei wurde gelöscht!"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"file-preview": {
|
"file-preview": {
|
||||||
@ -1393,12 +1383,6 @@
|
|||||||
},
|
},
|
||||||
"exact-date": "{day} {month} {year} um {hour}:{minute} Uhr",
|
"exact-date": "{day} {month} {year} um {hour}:{minute} Uhr",
|
||||||
"file": "Datei",
|
"file": "Datei",
|
||||||
"file-attribute": {
|
|
||||||
"update": {
|
|
||||||
"error": "Failed to update file attribute value!",
|
|
||||||
"success": "File attribute value has been updated successfully!"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"file-attribute-encoding-types": {
|
"file-attribute-encoding-types": {
|
||||||
"ascii": "ASCII",
|
"ascii": "ASCII",
|
||||||
"iso": "ISO-8859-1",
|
"iso": "ISO-8859-1",
|
||||||
@ -1409,6 +1393,12 @@
|
|||||||
"number": "Nummer",
|
"number": "Nummer",
|
||||||
"text": "Freier Text"
|
"text": "Freier Text"
|
||||||
},
|
},
|
||||||
|
"file-attribute": {
|
||||||
|
"update": {
|
||||||
|
"error": "Failed to update file attribute value!",
|
||||||
|
"success": "File attribute value has been updated successfully!"
|
||||||
|
}
|
||||||
|
},
|
||||||
"file-attributes-configurations": {
|
"file-attributes-configurations": {
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"form": {
|
"form": {
|
||||||
@ -1626,15 +1616,6 @@
|
|||||||
"csv": "File attributes were imported successfully from uploaded CSV file."
|
"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-menu": {
|
||||||
"filter-options": "Filteroptionen",
|
"filter-options": "Filteroptionen",
|
||||||
"filter-types": "Filter",
|
"filter-types": "Filter",
|
||||||
@ -1644,6 +1625,15 @@
|
|||||||
"unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten",
|
"unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten",
|
||||||
"with-comments": "Nur Anmerkungen mit Kommentaren"
|
"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": {
|
"filters": {
|
||||||
"assigned-people": "Beauftragt",
|
"assigned-people": "Beauftragt",
|
||||||
"documents-status": "Documents state",
|
"documents-status": "Documents state",
|
||||||
@ -1922,13 +1912,6 @@
|
|||||||
"user-promoted-to-approver": "<b>{user}</b> wurde im Dossier <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> zum Genehmiger ernannt!",
|
"user-promoted-to-approver": "<b>{user}</b> wurde im Dossier <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> zum Genehmiger ernannt!",
|
||||||
"user-removed-as-dossier-member": "<b>{user}</b> wurde als Mitglied von: <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> entfernt!"
|
"user-removed-as-dossier-member": "<b>{user}</b> wurde als Mitglied von: <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> 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": {
|
"notifications-screen": {
|
||||||
"category": {
|
"category": {
|
||||||
"email-notifications": "E-Mail Benachrichtigungen",
|
"email-notifications": "E-Mail Benachrichtigungen",
|
||||||
@ -1942,6 +1925,7 @@
|
|||||||
"dossier": "Dossierbezogene Benachrichtigungen",
|
"dossier": "Dossierbezogene Benachrichtigungen",
|
||||||
"other": "Andere Benachrichtigungen"
|
"other": "Andere Benachrichtigungen"
|
||||||
},
|
},
|
||||||
|
"options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten",
|
||||||
"options": {
|
"options": {
|
||||||
"ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen bin",
|
"ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen bin",
|
||||||
"ASSIGN_REVIEWER": "Wenn ich einem Dokument als Überprüfer zugewiesen bin",
|
"ASSIGN_REVIEWER": "Wenn ich einem Dokument als Überprüfer zugewiesen bin",
|
||||||
@ -1959,7 +1943,6 @@
|
|||||||
"USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde",
|
"USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde",
|
||||||
"USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere"
|
"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": {
|
"schedule": {
|
||||||
"daily": "Tägliche Zusammenfassung",
|
"daily": "Tägliche Zusammenfassung",
|
||||||
"instant": "Sofortig",
|
"instant": "Sofortig",
|
||||||
@ -1967,6 +1950,13 @@
|
|||||||
},
|
},
|
||||||
"title": "Benachrichtigungseinstellungen"
|
"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": {
|
"ocr": {
|
||||||
"confirmation-dialog": {
|
"confirmation-dialog": {
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
@ -2058,16 +2048,16 @@
|
|||||||
"warnings-label": "Prompts and dialogs",
|
"warnings-label": "Prompts and dialogs",
|
||||||
"warnings-subtitle": "Do not show again options"
|
"warnings-subtitle": "Do not show again options"
|
||||||
},
|
},
|
||||||
"processing": {
|
|
||||||
"basic": "Processing",
|
|
||||||
"ocr": "OCR"
|
|
||||||
},
|
|
||||||
"processing-status": {
|
"processing-status": {
|
||||||
"ocr": "OCR",
|
"ocr": "OCR",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"processed": "Processed",
|
"processed": "Processed",
|
||||||
"processing": "Processing"
|
"processing": "Processing"
|
||||||
},
|
},
|
||||||
|
"processing": {
|
||||||
|
"basic": "Processing",
|
||||||
|
"ocr": "OCR"
|
||||||
|
},
|
||||||
"readonly": "Lesemodus",
|
"readonly": "Lesemodus",
|
||||||
"readonly-archived": "Read only (archived)",
|
"readonly-archived": "Read only (archived)",
|
||||||
"redact-text": {
|
"redact-text": {
|
||||||
@ -2303,12 +2293,6 @@
|
|||||||
"red-user-admin": "Benutzer-Admin",
|
"red-user-admin": "Benutzer-Admin",
|
||||||
"regular": "Regulär"
|
"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": {
|
"search-screen": {
|
||||||
"cols": {
|
"cols": {
|
||||||
"assignee": "Bevollmächtigter",
|
"assignee": "Bevollmächtigter",
|
||||||
@ -2332,6 +2316,12 @@
|
|||||||
"no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.",
|
"no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.",
|
||||||
"table-header": "{length} search {length, plural, one{result} other{results}}"
|
"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",
|
"seconds": "seconds",
|
||||||
"size": "Size",
|
"size": "Size",
|
||||||
"smtp-auth-config": {
|
"smtp-auth-config": {
|
||||||
|
|||||||
@ -242,7 +242,6 @@
|
|||||||
"label": "Add hint only here"
|
"label": "Add hint only here"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"selected-text": "Selected text:",
|
|
||||||
"type": "Type",
|
"type": "Type",
|
||||||
"type-placeholder": "Select type..."
|
"type-placeholder": "Select type..."
|
||||||
},
|
},
|
||||||
@ -639,25 +638,16 @@
|
|||||||
"warning": "Warning: this cannot be undone!"
|
"warning": "Warning: this cannot be undone!"
|
||||||
},
|
},
|
||||||
"confirmation-dialog": {
|
"confirmation-dialog": {
|
||||||
"approve-file-without-analysis": {
|
|
||||||
"confirmationText": "Approve without analysis",
|
|
||||||
"denyText": "Cancel",
|
|
||||||
"question": "Analysis required to detect new components.",
|
|
||||||
"title": "Warning!"
|
|
||||||
},
|
|
||||||
"approve-file": {
|
"approve-file": {
|
||||||
"question": "This document has unseen changes, do you wish to approve it anyway?",
|
"confirmationText": "Approve anyway",
|
||||||
"title": "Warning!"
|
"denyText": "No, cancel",
|
||||||
},
|
"question": "Do you still want to approve the {questionLength, plural, one{document} other{documents}}?",
|
||||||
"approve-multiple-files-without-analysis": {
|
"title": "Approval warning",
|
||||||
"confirmationText": "Approve without analysis",
|
"warning-reason": {
|
||||||
"denyText": "Cancel",
|
"legal-basis-missing": "Legal basis missing",
|
||||||
"question": "Analysis required to detect new components for at least one file.",
|
"pending-changes": "Pending Changes",
|
||||||
"title": "Warning"
|
"unmapped-justification": "Unmapped justification"
|
||||||
},
|
}
|
||||||
"approve-multiple-files": {
|
|
||||||
"question": "At least one of the files you selected has unseen changes, do you wish to approve them anyway?",
|
|
||||||
"title": "Warning!"
|
|
||||||
},
|
},
|
||||||
"assign-file-to-me": {
|
"assign-file-to-me": {
|
||||||
"question": {
|
"question": {
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
Subproject commit 2faecb44a926f02a6d4186e58751ac615f2bfd47
|
Subproject commit c71a4995a63e4886bc23a8a8cea7d02d7560c2aa
|
||||||
19
libs/red-domain/src/lib/files/approve-file-types.ts
Normal file
19
libs/red-domain/src/lib/files/approve-file-types.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
export interface ApproveResponse {
|
||||||
|
readonly fileId: string;
|
||||||
|
readonly hasWarnings?: boolean;
|
||||||
|
readonly fileWarnings: WarningModel[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface WarningModel {
|
||||||
|
id: string;
|
||||||
|
value: string;
|
||||||
|
pages: number[];
|
||||||
|
type: string;
|
||||||
|
warningType: WarningType;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum WarningType {
|
||||||
|
PENDING_CHANGE = 'PENDING_CHANGE',
|
||||||
|
LEGAL_BASIS_MISSING = 'LEGAL_BASIS_MISSING',
|
||||||
|
UNMAPPED_JUSTIFICATION = 'UNMAPPED_JUSTIFICATION',
|
||||||
|
}
|
||||||
@ -4,3 +4,4 @@ export * from './types';
|
|||||||
export * from './file-upload-result';
|
export * from './file-upload-result';
|
||||||
export * from './overwrite-file-options';
|
export * from './overwrite-file-options';
|
||||||
export * from './super-types';
|
export * from './super-types';
|
||||||
|
export * from './approve-file-types';
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user