RED-7345 - WIP Add/Remove bulk-local text redaction option in dialogs

This commit is contained in:
Valentin Mihai 2024-09-16 21:16:06 +03:00
parent 3cd1eaeddc
commit 2f6d460442
24 changed files with 391 additions and 207 deletions

View File

@ -2,11 +2,12 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { addHintTranslations } from '@translations/add-hint-translations'; import { addHintTranslations } from '@translations/add-hint-translations';
import { redactTextTranslations } from '@translations/redact-text-translations'; import { redactTextTranslations } from '@translations/redact-text-translations';
import { removeRedactionTranslations } from '@translations/remove-redaction-translations'; import { removeRedactionTranslations } from '@translations/remove-redaction-translations';
import { RedactOrHintOptions, RemoveRedactionOptions } from '../../file-preview/utils/dialog-types'; import { ForceAnnotationOptions, RedactOrHintOptions, RemoveRedactionOptions } from '../../file-preview/utils/dialog-types';
export const SystemDefaults = { export const SystemDefaults = {
ADD_REDACTION_DEFAULT: RedactOrHintOptions.IN_DOSSIER, ADD_REDACTION_DEFAULT: RedactOrHintOptions.IN_DOSSIER,
ADD_HINT_DEFAULT: RedactOrHintOptions.IN_DOSSIER, ADD_HINT_DEFAULT: RedactOrHintOptions.IN_DOSSIER,
FORCE_REDACTION_DEFAULT: ForceAnnotationOptions.ONLY_HERE,
REMOVE_REDACTION_DEFAULT: RemoveRedactionOptions.ONLY_HERE, REMOVE_REDACTION_DEFAULT: RemoveRedactionOptions.ONLY_HERE,
REMOVE_HINT_DEFAULT: RemoveRedactionOptions.ONLY_HERE, REMOVE_HINT_DEFAULT: RemoveRedactionOptions.ONLY_HERE,
REMOVE_RECOMMENDATION_DEFAULT: RemoveRedactionOptions.DO_NOT_RECOMMEND, REMOVE_RECOMMENDATION_DEFAULT: RemoveRedactionOptions.DO_NOT_RECOMMEND,
@ -28,6 +29,10 @@ export const redactionAddOptions = [
label: redactTextTranslations.onlyHere.label, label: redactTextTranslations.onlyHere.label,
value: RedactOrHintOptions.ONLY_HERE, value: RedactOrHintOptions.ONLY_HERE,
}, },
{
label: redactTextTranslations.inDocument.label,
value: RedactOrHintOptions.IN_DOCUMENT,
},
{ {
label: redactTextTranslations.inDossier.label, label: redactTextTranslations.inDossier.label,
value: RedactOrHintOptions.IN_DOSSIER, value: RedactOrHintOptions.IN_DOSSIER,

View File

@ -2,32 +2,40 @@
<form (submit)="save()" [formGroup]="form"> <form (submit)="save()" [formGroup]="form">
<div class="dialog-header heading-l" [translate]="dialogTitle"></div> <div class="dialog-header heading-l" [translate]="dialogTitle"></div>
<div class="dialog-content"> <div class="dialog-content force-annotation">
<redaction-selected-annotations-table @if (!isImageHint) {
[columns]="tableColumns" <redaction-selected-annotations-table
[data]="tableData" [columns]="tableColumns"
[staticColumns]="true" [data]="tableData"
*ngIf="!isImageHint" [staticColumns]="true"
></redaction-selected-annotations-table> ></redaction-selected-annotations-table>
<div *ngIf="!isHintDialog && !isDocumine" class="iqser-input-group required w-400"> }
<label [translate]="'manual-annotation.dialog.content.reason'"></label>
<mat-form-field>
<mat-select
[placeholder]="'manual-annotation.dialog.content.reason-placeholder' | translate"
class="full-width"
formControlName="reason"
>
<mat-option *ngFor="let option of legalOptions" [matTooltip]="option.description" [value]="option">
{{ option.label }}
</mat-option>
</mat-select>
</mat-form-field>
</div>
<div *ngIf="!isHintDialog && !isDocumine" class="iqser-input-group w-400"> @if (!isHintDialog && !isDocumine) {
<label [translate]="'manual-annotation.dialog.content.legalBasis'"></label> <iqser-details-radio [options]="options" formControlName="option"></iqser-details-radio>
<input [value]="form.get('reason').value?.legalBasis" disabled type="text" />
</div> <div class="iqser-input-group required w-400">
<label [translate]="'manual-annotation.dialog.content.reason'"></label>
<mat-form-field>
<mat-select
[placeholder]="'manual-annotation.dialog.content.reason-placeholder' | translate"
class="full-width"
formControlName="reason"
>
@for (option of legalOptions; track option) {
<mat-option [matTooltip]="option.description" [value]="option">
{{ option.label }}
</mat-option>
}
</mat-select>
</mat-form-field>
</div>
<div class="iqser-input-group w-400">
<label [translate]="'manual-annotation.dialog.content.legalBasis'"></label>
<input [value]="form.get('reason').value?.legalBasis" disabled type="text" />
</div>
}
<div class="iqser-input-group w-300"> <div class="iqser-input-group w-300">
<label [translate]="'manual-annotation.dialog.content.comment'"></label> <label [translate]="'manual-annotation.dialog.content.comment'"></label>

View File

@ -25,6 +25,11 @@ import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select'; import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatTooltip } from '@angular/material/tooltip'; import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { ForceAnnotationOption, RedactOrHintOption } from '../../utils/dialog-types';
import { getForceAnnotationOptions, getRedactOrHintOptions } from '../../utils/dialog-options';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import { SystemDefaults } from '../../../account/utils/dialog-defaults';
export interface LegalBasisOption { export interface LegalBasisOption {
label?: string; label?: string;
@ -55,10 +60,12 @@ const DOCUMINE_LEGAL_BASIS = 'n-a.';
CircleButtonComponent, CircleButtonComponent,
NgForOf, NgForOf,
HelpButtonComponent, HelpButtonComponent,
DetailsRadioComponent,
], ],
}) })
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 options: DetailsRadioOption<ForceAnnotationOption>[];
readonly tableColumns = [ readonly tableColumns = [
{ {
@ -85,6 +92,7 @@ export class ForceAnnotationDialogComponent extends BaseDialogComponent implemen
private readonly _data: { readonly dossier: Dossier; readonly hint: boolean; annotations: AnnotationWrapper[] }, private readonly _data: { readonly dossier: Dossier; readonly hint: boolean; annotations: AnnotationWrapper[] },
) { ) {
super(_dialogRef); super(_dialogRef);
this.options = getForceAnnotationOptions(this.isDocumine, this.isHintDialog);
this.form = this.#getForm(); this.form = this.#getForm();
} }
@ -137,6 +145,7 @@ export class ForceAnnotationDialogComponent extends BaseDialogComponent implemen
return this._formBuilder.group({ return this._formBuilder.group({
reason: this._data.hint ? ['Forced Hint'] : [null, !this.isDocumine ? Validators.required : null], reason: this._data.hint ? ['Forced Hint'] : [null, !this.isDocumine ? Validators.required : null],
comment: [null], comment: [null],
option: this.options.find(o => o.value === SystemDefaults.FORCE_REDACTION_DEFAULT),
}); });
} }
@ -145,6 +154,7 @@ export class ForceAnnotationDialogComponent extends BaseDialogComponent implemen
request.legalBasis = !this.isDocumine ? this.form.get('reason').value.legalBasis : DOCUMINE_LEGAL_BASIS; request.legalBasis = !this.isDocumine ? this.form.get('reason').value.legalBasis : DOCUMINE_LEGAL_BASIS;
request.comment = this.form.get('comment').value; request.comment = this.form.get('comment').value;
request.option = this.form.get('option').value.value;
return request; return request;
} }

View File

@ -22,7 +22,13 @@ import {
ValueColumn, ValueColumn,
} from '../../components/selected-annotations-table/selected-annotations-table.component'; } from '../../components/selected-annotations-table/selected-annotations-table.component';
import { getRedactOrHintOptions } from '../../utils/dialog-options'; import { getRedactOrHintOptions } from '../../utils/dialog-options';
import { RedactOrHintOption, RedactOrHintOptions, RedactRecommendationData, RedactRecommendationResult } from '../../utils/dialog-types'; import {
RedactOrHintOption,
RedactOrHintOptions,
RedactRecommendationData,
RedactRecommendationResult,
ResizeOptions,
} from '../../utils/dialog-types';
import { LegalBasisOption } from '../manual-redaction-dialog/manual-annotation-dialog.component'; import { LegalBasisOption } from '../manual-redaction-dialog/manual-annotation-dialog.component';
@Component({ @Component({
@ -156,6 +162,7 @@ export class RedactRecommendationDialogComponent
this.close({ this.close({
redaction, redaction,
isMulti: this.isMulti, isMulti: this.isMulti,
bulkLocal: this.form.controls.option.value.value === ResizeOptions.IN_DOCUMENT,
}); });
} }

View File

@ -1,5 +1,5 @@
.dialog-content { .dialog-content {
height: 493px; height: 530px;
overflow-y: auto; overflow-y: auto;
} }

View File

@ -21,7 +21,7 @@ import { firstValueFrom, Observable } from 'rxjs';
import { map, tap } from 'rxjs/operators'; import { map, tap } from 'rxjs/operators';
import { SystemDefaultOption, SystemDefaults } from '../../../account/utils/dialog-defaults'; import { SystemDefaultOption, SystemDefaults } from '../../../account/utils/dialog-defaults';
import { getRedactOrHintOptions } from '../../utils/dialog-options'; import { getRedactOrHintOptions } from '../../utils/dialog-options';
import { RedactOrHintOption, RedactOrHintOptions, RedactTextData, RedactTextResult } from '../../utils/dialog-types'; import { RedactOrHintOption, RedactOrHintOptions, RedactTextData, RedactTextResult, ResizeOptions } from '../../utils/dialog-types';
import { LegalBasisOption } from '../manual-redaction-dialog/manual-annotation-dialog.component'; import { LegalBasisOption } from '../manual-redaction-dialog/manual-annotation-dialog.component';
const MAXIMUM_TEXT_AREA_WIDTH = 421; const MAXIMUM_TEXT_AREA_WIDTH = 421;
@ -165,7 +165,7 @@ export class RedactTextDialogComponent
if (!this.#applyToAllDossiers) { if (!this.#applyToAllDossiers) {
const selectedDictionaryType = this.form.controls.dictionary.value; const selectedDictionaryType = this.form.controls.dictionary.value;
const selectedDictionary = this.dictionaries.find(d => d.type === selectedDictionaryType); const selectedDictionary = this.dictionaries.find(d => d.type === selectedDictionaryType);
this.options[1].extraOption.disabled = selectedDictionary.dossierDictionaryOnly; this.options[2].extraOption.disabled = selectedDictionary.dossierDictionaryOnly;
} }
} }
@ -175,6 +175,7 @@ export class RedactTextDialogComponent
this.close({ this.close({
redaction, redaction,
dictionary: this.dictionaries.find(d => d.type === this.form.controls.dictionary.value), dictionary: this.dictionaries.find(d => d.type === this.form.controls.dictionary.value),
bulkLocal: this.form.controls.option.value.value === ResizeOptions.IN_DOCUMENT,
}); });
} }
@ -188,14 +189,18 @@ export class RedactTextDialogComponent
#setupValidators(option: RedactOrHintOption) { #setupValidators(option: RedactOrHintOption) {
switch (option) { switch (option) {
case RedactOrHintOptions.IN_DOSSIER:
this.form.controls.reason.clearValidators();
this.form.controls.dictionary.addValidators(Validators.required);
break;
case RedactOrHintOptions.ONLY_HERE: case RedactOrHintOptions.ONLY_HERE:
this.form.controls.dictionary.clearValidators(); this.form.controls.dictionary.clearValidators();
this.form.controls.reason.addValidators(Validators.required); this.form.controls.reason.addValidators(Validators.required);
break; break;
case RedactOrHintOptions.IN_DOCUMENT:
this.form.controls.dictionary.clearValidators();
this.form.controls.reason.addValidators(Validators.required);
break;
case RedactOrHintOptions.IN_DOSSIER:
this.form.controls.reason.clearValidators();
this.form.controls.dictionary.addValidators(Validators.required);
break;
} }
this.form.controls.reason.updateValueAndValidity(); this.form.controls.reason.updateValueAndValidity();
@ -251,7 +256,7 @@ export class RedactTextDialogComponent
#resetValues() { #resetValues() {
this.#applyToAllDossiers = this.applyToAll; this.#applyToAllDossiers = this.applyToAll;
this.options[1].extraOption.checked = this.#applyToAllDossiers; this.options[2].extraOption.checked = this.#applyToAllDossiers;
if (this.dictionaryRequest) { if (this.dictionaryRequest) {
this.form.controls.reason.setValue(null); this.form.controls.reason.setValue(null);
this.form.controls.dictionary.setValue(null); this.form.controls.dictionary.setValue(null);

View File

@ -26,7 +26,13 @@ import {
} from '../../components/selected-annotations-table/selected-annotations-table.component'; } from '../../components/selected-annotations-table/selected-annotations-table.component';
import { DialogHelpModeKeys } from '../../utils/constants'; import { DialogHelpModeKeys } from '../../utils/constants';
import { getRemoveRedactionOptions } from '../../utils/dialog-options'; import { getRemoveRedactionOptions } from '../../utils/dialog-options';
import { RemoveRedactionData, RemoveRedactionOption, RemoveRedactionOptions, RemoveRedactionResult } from '../../utils/dialog-types'; import {
RemoveRedactionData,
RemoveRedactionOption,
RemoveRedactionOptions,
RemoveRedactionResult,
ResizeOptions,
} from '../../utils/dialog-types';
@Component({ @Component({
templateUrl: './remove-redaction-dialog.component.html', templateUrl: './remove-redaction-dialog.component.html',
@ -174,7 +180,10 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
} }
save(): void { save(): void {
this.close(this.form.getRawValue()); this.close({
...this.form.getRawValue(),
bulkLocal: this.form.controls.option.value.value === ResizeOptions.IN_DOCUMENT,
});
} }
#getOption(option: RemoveRedactionOption): DetailsRadioOption<RemoveRedactionOption> { #getOption(option: RemoveRedactionOption): DetailsRadioOption<RemoveRedactionOption> {

View File

@ -468,6 +468,7 @@ export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnIni
const add$ = this._manualRedactionService.addAnnotation([result.redaction], this.dossierId, this.fileId, { const add$ = this._manualRedactionService.addAnnotation([result.redaction], this.dossierId, this.fileId, {
hint, hint,
dictionaryLabel: result.dictionary?.label, dictionaryLabel: result.dictionary?.label,
bulkLocal: result.bulkLocal,
}); });
const addAndReload$ = add$.pipe( const addAndReload$ = add$.pipe(

View File

@ -32,6 +32,7 @@ import { ResizeRedactionDialogComponent } from '../dialogs/resize-redaction-dial
import { import {
EditRedactionData, EditRedactionData,
EditRedactResult, EditRedactResult,
ForceAnnotationOptions,
RemoveRedactionData, RemoveRedactionData,
RemoveRedactionOptions, RemoveRedactionOptions,
RemoveRedactionPermissions, RemoveRedactionPermissions,
@ -80,14 +81,22 @@ export class AnnotationActionsService {
const { dossierId, fileId } = this._state; const { dossierId, fileId } = this._state;
const data = { dossier: this._state.dossier(), annotations, hint }; const data = { dossier: this._state.dossier(), annotations, hint };
this._dialogService.openDialog('forceAnnotation', data, (request: ILegalBasisChangeRequest) => { this._dialogService.openDialog('forceAnnotation', data, (request: ILegalBasisChangeRequest) => {
this.#processObsAndEmit( let obs$;
this._manualRedactionService.bulkForce( if (request.option === ForceAnnotationOptions.ONLY_HERE) {
obs$ = this._manualRedactionService.bulkForce(
annotations.map(a => ({ ...request, annotationId: a.id })), annotations.map(a => ({ ...request, annotationId: a.id })),
dossierId, dossierId,
fileId, fileId,
annotations[0].isIgnoredHint, annotations[0].isIgnoredHint,
), );
).then(); } else {
console.log('annotation: ', annotations[0]);
obs$ = this._manualRedactionService.addAnnotation(annotations, dossierId, fileId, {
hint,
bulkLocal: true,
});
}
this.#processObsAndEmit(obs$).then();
}); });
} }
@ -436,6 +445,7 @@ export class AnnotationActionsService {
const includeUnprocessed = redactions.every(redaction => this.#includeUnprocessed(redaction, true)); const includeUnprocessed = redactions.every(redaction => this.#includeUnprocessed(redaction, true));
const body = redactions.map(redaction => ({ const body = redactions.map(redaction => ({
annotationId: redaction.id, annotationId: redaction.id,
value: redaction.value,
comment: dialogResult.comment, comment: dialogResult.comment,
removeFromDictionary, removeFromDictionary,
removeFromAllDossiers: !!dialogResult.option.extraOption?.checked || !!dialogResult.applyToAllDossiers, removeFromAllDossiers: !!dialogResult.option.extraOption?.checked || !!dialogResult.applyToAllDossiers,
@ -444,7 +454,15 @@ export class AnnotationActionsService {
const isHint = redactions.every(r => r.isHint); const isHint = redactions.every(r => r.isHint);
const { dossierId, fileId } = this._state; const { dossierId, fileId } = this._state;
this.#processObsAndEmit( this.#processObsAndEmit(
this._manualRedactionService.removeRedaction(body, dossierId, fileId, removeFromDictionary, isHint, includeUnprocessed), this._manualRedactionService.removeRedaction(
body,
dossierId,
fileId,
removeFromDictionary,
isHint,
includeUnprocessed,
dialogResult.bulkLocal,
),
).then(); ).then();
} }

View File

@ -39,6 +39,7 @@ function getMessage(action: ManualRedactionActions, isDictionary = false, error
export class ManualRedactionService extends GenericService<IManualAddResponse> { export class ManualRedactionService extends GenericService<IManualAddResponse> {
protected readonly _defaultModelPath = 'manualRedaction'; protected readonly _defaultModelPath = 'manualRedaction';
readonly #bulkRedaction = `${this._defaultModelPath}/bulk/redaction`; readonly #bulkRedaction = `${this._defaultModelPath}/bulk/redaction`;
readonly #bulkLocal = `${this._defaultModelPath}/bulk-local`;
constructor( constructor(
private readonly _toaster: Toaster, private readonly _toaster: Toaster,
@ -80,14 +81,14 @@ export class ManualRedactionService extends GenericService<IManualAddResponse> {
requests: List<IAddRedactionRequest>, requests: List<IAddRedactionRequest>,
dossierId: string, dossierId: string,
fileId: string, fileId: string,
options?: { hint?: boolean; dictionaryLabel?: string }, options?: { hint?: boolean; dictionaryLabel?: string; bulkLocal?: boolean },
) { ) {
const toast = requests[0].addToDictionary const toast = requests[0].addToDictionary
? this.#showAddToDictionaryToast(requests, options?.dictionaryLabel) ? this.#showAddToDictionaryToast(requests, options?.dictionaryLabel)
: this.#showToast(options?.hint ? 'force-hint' : 'add'); : this.#showToast(options?.hint ? 'force-hint' : 'add');
const canAddRedaction = this._iqserPermissionsService.has(Roles.redactions.write); const canAddRedaction = this._iqserPermissionsService.has(Roles.redactions.write);
if (canAddRedaction) { if (canAddRedaction) {
return this.add(requests, dossierId, fileId).pipe(toast); return this.add(requests, dossierId, fileId, options.bulkLocal).pipe(toast);
} }
return of(undefined); return of(undefined);
@ -108,8 +109,9 @@ export class ManualRedactionService extends GenericService<IManualAddResponse> {
removeFromDictionary = false, removeFromDictionary = false,
isHint = false, isHint = false,
includeUnprocessed = false, includeUnprocessed = false,
bulkLocal = false,
) { ) {
return this.remove(body, dossierId, fileId, includeUnprocessed).pipe( return this.remove(body, dossierId, fileId, includeUnprocessed, bulkLocal).pipe(
this.#showToast(!isHint ? 'remove' : 'remove-hint', removeFromDictionary), this.#showToast(!isHint ? 'remove' : 'remove-hint', removeFromDictionary),
); );
} }
@ -127,8 +129,9 @@ export class ManualRedactionService extends GenericService<IManualAddResponse> {
} }
} }
add(body: List<IAddRedactionRequest>, dossierId: string, fileId: string) { add(body: List<IAddRedactionRequest>, dossierId: string, fileId: string, bulkLocal = false) {
return this._post(body, `${this.#bulkRedaction}/add/${dossierId}/${fileId}`).pipe(this.#log('Add', body)); const bulkPath = bulkLocal ? this.#bulkLocal : this.#bulkRedaction;
return this._post(bulkLocal ? body[0] : body, `${bulkPath}/add/${dossierId}/${fileId}`).pipe(this.#log('Add', body));
} }
recategorize(body: List<IRecategorizationRequest>, dossierId: string, fileId: string, includeUnprocessed = false) { recategorize(body: List<IRecategorizationRequest>, dossierId: string, fileId: string, includeUnprocessed = false) {
@ -142,8 +145,13 @@ export class ManualRedactionService extends GenericService<IManualAddResponse> {
return super.delete(annotationIds, url).pipe(this.#log('Undo', annotationIds)); return super.delete(annotationIds, url).pipe(this.#log('Undo', annotationIds));
} }
remove(body: List<IRemoveRedactionRequest>, dossierId: string, fileId: string, includeUnprocessed = false) { remove(body: List<IRemoveRedactionRequest>, dossierId: string, fileId: string, includeUnprocessed = false, bulkLocal = false) {
return this._post(body, `${this.#bulkRedaction}/remove/${dossierId}/${fileId}?includeUnprocessed=${includeUnprocessed}`).pipe( const bulkPath = bulkLocal ? this.#bulkLocal : this.#bulkRedaction;
const newBody = {
value: body[0].value,
rectangle: false,
};
return this._post(newBody, `${bulkPath}/remove/${dossierId}/${fileId}?includeUnprocessed=${includeUnprocessed}`).pipe(
this.#log('Remove', body), this.#log('Remove', body),
); );
} }

View File

@ -224,6 +224,7 @@ export class PdfProxyService {
const selectedQuads: Record<string, Quad[]> = this._pdf.documentViewer.getSelectedTextQuads(); const selectedQuads: Record<string, Quad[]> = this._pdf.documentViewer.getSelectedTextQuads();
const text = this._documentViewer.selectedText; const text = this._documentViewer.selectedText;
const manualRedactionEntry = this.#getManualRedaction(selectedQuads, text, true); const manualRedactionEntry = this.#getManualRedaction(selectedQuads, text, true);
console.log('manualRedactionEntry: ', manualRedactionEntry);
this.redactTextRequested$.next({ manualRedactionEntry, type }); this.redactTextRequested$.next({ manualRedactionEntry, type });
} }

View File

@ -7,6 +7,7 @@ import { removeAnnotationTranslations } from '@translations/remove-annotation-tr
import { removeRedactionTranslations } from '@translations/remove-redaction-translations'; import { removeRedactionTranslations } from '@translations/remove-redaction-translations';
import { resizeRedactionTranslations } from '@translations/resize-redaction-translations'; import { resizeRedactionTranslations } from '@translations/resize-redaction-translations';
import { import {
ForceAnnotationOption,
RedactOrHintOption, RedactOrHintOption,
RedactOrHintOptions, RedactOrHintOptions,
RemoveRedactionData, RemoveRedactionData,
@ -17,6 +18,7 @@ import {
} from './dialog-types'; } from './dialog-types';
const PIN_ICON = 'red:push-pin'; const PIN_ICON = 'red:push-pin';
const DOCUMENT_ICON = 'iqser:document';
const FOLDER_ICON = 'red:folder'; const FOLDER_ICON = 'red:folder';
const REMOVE_FROM_DICT_ICON = 'red:remove-from-dict'; const REMOVE_FROM_DICT_ICON = 'red:remove-from-dict';
@ -77,6 +79,15 @@ export const getRedactOrHintOptions = (
return options; return options;
} }
if (!isHint) {
options.push({
label: redactTextTranslations.inDocument.label,
description: redactTextTranslations.inDocument.description,
icon: DOCUMENT_ICON,
value: ResizeOptions.IN_DOCUMENT,
});
}
options.push({ options.push({
label: translations.inDossier.label, label: translations.inDossier.label,
description: translations.inDossier.description, description: translations.inDossier.description,
@ -140,6 +151,7 @@ export const getRemoveRedactionOptions = (
applyToAllDossiers: boolean, applyToAllDossiers: boolean,
isDocumine: boolean = false, isDocumine: boolean = false,
): DetailsRadioOption<RemoveRedactionOption>[] => { ): DetailsRadioOption<RemoveRedactionOption>[] => {
console.log('TEST');
const translations = isDocumine ? removeAnnotationTranslations : removeRedactionTranslations; const translations = isDocumine ? removeAnnotationTranslations : removeRedactionTranslations;
const { permissions, redactions, isApprover, falsePositiveContext } = data; const { permissions, redactions, isApprover, falsePositiveContext } = data;
const isBulk = redactions.length > 1; const isBulk = redactions.length > 1;
@ -156,6 +168,13 @@ export const getRemoveRedactionOptions = (
icon: PIN_ICON, icon: PIN_ICON,
value: RemoveRedactionOptions.ONLY_HERE, value: RemoveRedactionOptions.ONLY_HERE,
}); });
options.push({
label: removeRedactionTranslations.IN_DOCUMENT.label,
description: removeRedactionTranslations.IN_DOCUMENT.description,
icon: DOCUMENT_ICON,
value: RemoveRedactionOptions.IN_DOCUMENT,
});
} }
if (permissions.canRemoveFromDictionary) { if (permissions.canRemoveFromDictionary) {
options.push({ options.push({
@ -217,3 +236,24 @@ export const getRemoveRedactionOptions = (
} }
return options; return options;
}; };
export const getForceAnnotationOptions = (isDocumine: boolean, isHint: boolean): DetailsRadioOption<ForceAnnotationOption>[] => {
if (isDocumine || isHint) {
return [];
}
return [
{
label: redactTextTranslations.onlyHere.label,
description: redactTextTranslations.onlyHere.description,
icon: PIN_ICON,
value: ResizeOptions.ONLY_HERE,
},
{
label: redactTextTranslations.inDocument.label,
description: redactTextTranslations.inDocument.description,
icon: DOCUMENT_ICON,
value: ResizeOptions.IN_DOCUMENT,
},
];
};

View File

@ -5,16 +5,25 @@ import { Dictionary, Dossier, File, IAddRedactionRequest, IManualRedactionEntry
export const RedactOrHintOptions = { export const RedactOrHintOptions = {
ONLY_HERE: 'ONLY_HERE', ONLY_HERE: 'ONLY_HERE',
IN_DOCUMENT: 'IN_DOCUMENT',
IN_DOSSIER: 'IN_DOSSIER', IN_DOSSIER: 'IN_DOSSIER',
} as const; } as const;
export type RedactOrHintOption = keyof typeof RedactOrHintOptions; export type RedactOrHintOption = keyof typeof RedactOrHintOptions;
export const ForceAnnotationOptions = {
ONLY_HERE: 'ONLY_HERE',
IN_DOCUMENT: 'IN_DOCUMENT',
} as const;
export type ForceAnnotationOption = keyof typeof ForceAnnotationOptions;
export const ResizeOptions = RedactOrHintOptions; export const ResizeOptions = RedactOrHintOptions;
export type ResizeRedactionOption = RedactOrHintOption; export type ResizeRedactionOption = RedactOrHintOption;
export const RemoveRedactionOptions = { export const RemoveRedactionOptions = {
ONLY_HERE: 'ONLY_HERE', ONLY_HERE: 'ONLY_HERE',
IN_DOCUMENT: 'IN_DOCUMENT',
IN_DOSSIER: 'IN_DOSSIER', IN_DOSSIER: 'IN_DOSSIER',
FALSE_POSITIVE: 'FALSE_POSITIVE', FALSE_POSITIVE: 'FALSE_POSITIVE',
DO_NOT_RECOMMEND: 'DO_NOT_RECOMMEND', DO_NOT_RECOMMEND: 'DO_NOT_RECOMMEND',
@ -46,6 +55,7 @@ export type AddHintData = RedactTextData;
export interface RedactTextResult { export interface RedactTextResult {
redaction: IManualRedactionEntry; redaction: IManualRedactionEntry;
dictionary: Dictionary; dictionary: Dictionary;
bulkLocal?: boolean;
} }
export type RedactRecommendationData = EditRedactionData; export type RedactRecommendationData = EditRedactionData;
@ -53,6 +63,7 @@ export type RedactRecommendationData = EditRedactionData;
export interface RedactRecommendationResult { export interface RedactRecommendationResult {
redaction: IAddRedactionRequest; redaction: IAddRedactionRequest;
isMulti: boolean; isMulti: boolean;
bulkLocal: boolean;
} }
export interface EditRedactResult { export interface EditRedactResult {
@ -112,6 +123,7 @@ export interface RemoveRedactionResult {
comment: string; comment: string;
option: DetailsRadioOption<RemoveRedactionOption>; option: DetailsRadioOption<RemoveRedactionOption>;
applyToAllDossiers?: boolean; applyToAllDossiers?: boolean;
bulkLocal?: boolean;
} }
export type RemoveAnnotationResult = RemoveRedactionResult; export type RemoveAnnotationResult = RemoveRedactionResult;

View File

@ -9,11 +9,15 @@ export interface DialogOption {
extraOptionDescription?: string; extraOptionDescription?: string;
} }
export const redactTextTranslations: Record<'onlyHere' | 'inDossier', DialogOption> = { export const redactTextTranslations: Record<'onlyHere' | 'inDocument' | 'inDossier', DialogOption> = {
onlyHere: { onlyHere: {
label: _('redact-text.dialog.content.options.only-here.label'), label: _('redact-text.dialog.content.options.only-here.label'),
description: _('redact-text.dialog.content.options.only-here.description'), description: _('redact-text.dialog.content.options.only-here.description'),
}, },
inDocument: {
label: _('redact-text.dialog.content.options.in-document.label'),
description: _('redact-text.dialog.content.options.in-document.description'),
},
inDossier: { inDossier: {
label: _('redact-text.dialog.content.options.in-dossier.label'), label: _('redact-text.dialog.content.options.in-dossier.label'),
description: _('redact-text.dialog.content.options.in-dossier.description'), description: _('redact-text.dialog.content.options.in-dossier.description'),

View File

@ -8,6 +8,10 @@ export const removeAnnotationTranslations: { [key in RemoveAnnotationOption]: Di
description: _('remove-annotation.dialog.content.options.only-here.description'), description: _('remove-annotation.dialog.content.options.only-here.description'),
descriptionBulk: _('remove-annotation.dialog.content.options.only-here.description-bulk'), descriptionBulk: _('remove-annotation.dialog.content.options.only-here.description-bulk'),
}, },
IN_DOCUMENT: {
label: _('remove-annotation.dialog.content.options.in-document.label'),
description: _('remove-annotation.dialog.content.options.in-document.description'),
},
IN_DOSSIER: { IN_DOSSIER: {
label: _('remove-annotation.dialog.content.options.in-dossier.label'), label: _('remove-annotation.dialog.content.options.in-dossier.label'),
labelBulk: _('remove-annotation.dialog.content.options.in-dossier.label-bulk'), labelBulk: _('remove-annotation.dialog.content.options.in-dossier.label-bulk'),

View File

@ -8,6 +8,10 @@ export const removeRedactionTranslations: { [key in RemoveRedactionOption]: Dial
description: _('remove-redaction.dialog.content.options.only-here.description'), description: _('remove-redaction.dialog.content.options.only-here.description'),
descriptionBulk: _('remove-redaction.dialog.content.options.only-here.description-bulk'), descriptionBulk: _('remove-redaction.dialog.content.options.only-here.description-bulk'),
}, },
IN_DOCUMENT: {
label: _('remove-redaction.dialog.content.options.in-document.label'),
description: _('remove-redaction.dialog.content.options.in-document.description'),
},
IN_DOSSIER: { IN_DOSSIER: {
label: _('remove-redaction.dialog.content.options.in-dossier.label'), label: _('remove-redaction.dialog.content.options.in-dossier.label'),
labelBulk: _('remove-redaction.dialog.content.options.in-dossier.label-bulk'), labelBulk: _('remove-redaction.dialog.content.options.in-dossier.label-bulk'),

View File

@ -1,7 +1,7 @@
{ {
"ADMIN_CONTACT_NAME": null, "ADMIN_CONTACT_NAME": null,
"ADMIN_CONTACT_URL": null, "ADMIN_CONTACT_URL": null,
"API_URL": "https://dan2.iqser.cloud", "API_URL": "https://dan1.iqser.cloud",
"APP_NAME": "RedactManager", "APP_NAME": "RedactManager",
"IS_DOCUMINE": false, "IS_DOCUMINE": false,
"RULE_EDITOR_DEV_ONLY": false, "RULE_EDITOR_DEV_ONLY": false,
@ -13,7 +13,7 @@
"MAX_RETRIES_ON_SERVER_ERROR": 3, "MAX_RETRIES_ON_SERVER_ERROR": 3,
"OAUTH_CLIENT_ID": "redaction", "OAUTH_CLIENT_ID": "redaction",
"OAUTH_IDP_HINT": null, "OAUTH_IDP_HINT": null,
"OAUTH_URL": "https://dan2.iqser.cloud/auth", "OAUTH_URL": "https://dan1.iqser.cloud/auth",
"RECENT_PERIOD_IN_HOURS": 24, "RECENT_PERIOD_IN_HOURS": 24,
"SELECTION_MODE": "structural", "SELECTION_MODE": "structural",
"MANUAL_BASE_URL": "https://docs.redactmanager.com/preview", "MANUAL_BASE_URL": "https://docs.redactmanager.com/preview",

View File

@ -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": {
@ -639,18 +638,14 @@
"warning": "Warnung: Wiederherstellung des Benutzers nicht möglich." "warning": "Warnung: Wiederherstellung des Benutzers nicht möglich."
}, },
"confirmation-dialog": { "confirmation-dialog": {
"approve-file": {
"question": "Dieses Dokument enthält ungesehene Änderungen, die sich durch die Reanalyse ergeben haben.<br><br>Möchten Sie es trotzdem freigeben?",
"title": "Warnung!"
},
"approve-file-without-analysis": { "approve-file-without-analysis": {
"confirmationText": "Ohne Analyse freigeben", "confirmationText": "Ohne Analyse freigeben",
"denyText": "Abbrechen", "denyText": "Abbrechen",
"question": "Analyse zur Erkennung neuer Schwärzungen erforderlich.", "question": "Analyse zur Erkennung neuer Schwärzungen erforderlich.",
"title": "Warnung!" "title": "Warnung!"
}, },
"approve-multiple-files": { "approve-file": {
"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?", "question": "Dieses Dokument enthält ungesehene Änderungen, die sich durch die Reanalyse ergeben haben.<br><br>Möchten Sie es trotzdem freigeben?",
"title": "Warnung!" "title": "Warnung!"
}, },
"approve-multiple-files-without-analysis": { "approve-multiple-files-without-analysis": {
@ -659,6 +654,10 @@
"question": "Für mindestens eine Datei ist ein Analyselauf zur Erkennung neuer Schwärzungen erforderlich.", "question": "Für mindestens eine Datei ist ein Analyselauf zur Erkennung neuer Schwärzungen erforderlich.",
"title": "Warnung" "title": "Warnung"
}, },
"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!"
},
"assign-file-to-me": { "assign-file-to-me": {
"question": { "question": {
"multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft.<br><br>Möchten Sie sich die Datei dennoch zuweisen?", "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft.<br><br>Möchten Sie sich die Datei dennoch zuweisen?",
@ -1028,13 +1027,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 +1103,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 +1137,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 +1340,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 +1353,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 +1392,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 +1402,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 +1625,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 +1634,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 +1921,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 +1934,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 +1952,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 +1959,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 +2057,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": {
@ -2082,6 +2081,10 @@
"edit-text": "Text bearbeiten", "edit-text": "Text bearbeiten",
"legal-basis": "Rechtsgrundlage", "legal-basis": "Rechtsgrundlage",
"options": { "options": {
"in-document": {
"description": "",
"label": ""
},
"in-dossier": { "in-dossier": {
"description": "Fügen Sie die Schwärzung zu jedem Dokument in {dossierName} hinzu.", "description": "Fügen Sie die Schwärzung zu jedem Dokument in {dossierName} hinzu.",
"extraOptionLabel": "In alle aktiven und zukünftigen Dossiers übernehmen", "extraOptionLabel": "In alle aktiven und zukünftigen Dossiers übernehmen",
@ -2121,6 +2124,10 @@
"description-bulk": "", "description-bulk": "",
"label": "In diesem Kontext aus dem Dossier entfernen" "label": "In diesem Kontext aus dem Dossier entfernen"
}, },
"in-document": {
"description": "",
"label": ""
},
"in-dossier": { "in-dossier": {
"description": "Annotieren Sie den Begriff in diesem Dossier nicht.", "description": "Annotieren Sie den Begriff in diesem Dossier nicht.",
"description-bulk": "", "description-bulk": "",
@ -2161,6 +2168,10 @@
"extraOptionLabel": "In alle aktiven und zukünftigen Dossiers übernehmen", "extraOptionLabel": "In alle aktiven und zukünftigen Dossiers übernehmen",
"label": "In diesem Kontext aus Dossier entfernen" "label": "In diesem Kontext aus Dossier entfernen"
}, },
"in-document": {
"description": "",
"label": ""
},
"in-dossier": { "in-dossier": {
"description": "Der Begriff wird in keinem Dokument dieses Dossiers {type, select, hint{annotiert} other{automatisch geschwärzt}}.", "description": "Der Begriff wird in keinem Dokument dieses Dossiers {type, select, hint{annotiert} other{automatisch geschwärzt}}.",
"description-bulk": "Die ausgewählten Begriffe werden in diesem Dossier nicht {type, select, hint{annotiert} other{automatisch geschwärzt}}.", "description-bulk": "Die ausgewählten Begriffe werden in diesem Dossier nicht {type, select, hint{annotiert} other{automatisch geschwärzt}}.",
@ -2303,12 +2314,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 +2337,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": {
@ -2587,4 +2598,4 @@
} }
}, },
"yesterday": "Gestern" "yesterday": "Gestern"
} }

View File

@ -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..."
}, },
@ -2082,6 +2081,10 @@
"edit-text": "Edit text", "edit-text": "Edit text",
"legal-basis": "Legal basis", "legal-basis": "Legal basis",
"options": { "options": {
"in-document": {
"description": "Add redaction for each occurrence of the term in this document.",
"label": "Redact in document"
},
"in-dossier": { "in-dossier": {
"description": "Add redaction in every document in {dossierName}.", "description": "Add redaction in every document in {dossierName}.",
"extraOptionLabel": "Apply to all active and future dossiers", "extraOptionLabel": "Apply to all active and future dossiers",
@ -2121,6 +2124,10 @@
"description-bulk": "", "description-bulk": "",
"label": "Remove from dossier in this context" "label": "Remove from dossier in this context"
}, },
"in-document": {
"description": "",
"label": ""
},
"in-dossier": { "in-dossier": {
"description": "Do not annotate the term in this dossier.", "description": "Do not annotate the term in this dossier.",
"description-bulk": "", "description-bulk": "",
@ -2161,6 +2168,10 @@
"extraOptionLabel": "Apply to all active and future dossiers", "extraOptionLabel": "Apply to all active and future dossiers",
"label": "Remove from dossier in this context" "label": "Remove from dossier in this context"
}, },
"in-document": {
"description": "Do not auto-redact the selected term in any pages of this document.",
"label": "Remove from document"
},
"in-dossier": { "in-dossier": {
"description": "Do not {type, select, hint{annotate} other{auto-redact}} the selected term in any document of this dossier.", "description": "Do not {type, select, hint{annotate} other{auto-redact}} the selected term in any document of this dossier.",
"description-bulk": "Do not {type, select, hint{annotate} other{auto-redact}} the selected terms in this dossier.", "description-bulk": "Do not {type, select, hint{annotate} other{auto-redact}} the selected terms in this dossier.",
@ -2587,4 +2598,4 @@
} }
}, },
"yesterday": "Yesterday" "yesterday": "Yesterday"
} }

View File

@ -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": {
@ -639,18 +638,14 @@
"warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!" "warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!"
}, },
"confirmation-dialog": { "confirmation-dialog": {
"approve-file": {
"question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?",
"title": "Warnung!"
},
"approve-file-without-analysis": { "approve-file-without-analysis": {
"confirmationText": "Approve without analysis", "confirmationText": "Approve without analysis",
"denyText": "Cancel", "denyText": "Cancel",
"question": "Analysis required to detect new components.", "question": "Analysis required to detect new components.",
"title": "Warning!" "title": "Warning!"
}, },
"approve-multiple-files": { "approve-file": {
"question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?",
"title": "Warnung!" "title": "Warnung!"
}, },
"approve-multiple-files-without-analysis": { "approve-multiple-files-without-analysis": {
@ -659,6 +654,10 @@
"question": "Analysis required to detect new components for at least one file.", "question": "Analysis required to detect new components for at least one file.",
"title": "Warning" "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": { "assign-file-to-me": {
"question": { "question": {
"multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft. Möchten Sie Reviewer werden und sich selbst dem Dokument zuweisen?", "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft. Möchten Sie Reviewer werden und sich selbst dem Dokument zuweisen?",
@ -1028,13 +1027,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 +1103,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 +1137,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 +1340,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 +1353,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 +1392,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 +1402,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 +1625,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 +1634,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 +1921,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 +1934,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 +1952,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 +1959,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 +2057,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": {
@ -2082,6 +2081,10 @@
"edit-text": "", "edit-text": "",
"legal-basis": "Legal basis", "legal-basis": "Legal basis",
"options": { "options": {
"in-document": {
"description": "",
"label": ""
},
"in-dossier": { "in-dossier": {
"description": "Add redaction in every document in {dossierName}.", "description": "Add redaction in every document in {dossierName}.",
"extraOptionLabel": "Apply to all dossiers", "extraOptionLabel": "Apply to all dossiers",
@ -2121,6 +2124,10 @@
"description-bulk": "The selected items should not be annotated in their respective contexts.", "description-bulk": "The selected items should not be annotated in their respective contexts.",
"label": "False positive" "label": "False positive"
}, },
"in-document": {
"description": "",
"label": ""
},
"in-dossier": { "in-dossier": {
"description": "Do not annotate ''{value}'' as ''{type}'' in any dossier.", "description": "Do not annotate ''{value}'' as ''{type}'' in any dossier.",
"description-bulk": "Do not annotate the selected terms as their respective types in any dossier.", "description-bulk": "Do not annotate the selected terms as their respective types in any dossier.",
@ -2161,6 +2168,10 @@
"extraOptionLabel": "Apply to all dossiers", "extraOptionLabel": "Apply to all dossiers",
"label": "False positive" "label": "False positive"
}, },
"in-document": {
"description": "",
"label": ""
},
"in-dossier": { "in-dossier": {
"description": "Do not {type} \"{value}\" in any document of the current dossier.", "description": "Do not {type} \"{value}\" in any document of the current dossier.",
"description-bulk": "", "description-bulk": "",
@ -2303,12 +2314,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 +2337,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": {
@ -2587,4 +2598,4 @@
} }
}, },
"yesterday": "Gestern" "yesterday": "Gestern"
} }

View File

@ -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..."
}, },
@ -2082,6 +2081,10 @@
"edit-text": "", "edit-text": "",
"legal-basis": "Legal basis", "legal-basis": "Legal basis",
"options": { "options": {
"in-document": {
"description": "Add redaction for each occurrence of the term in this document.",
"label": "Redact in document"
},
"in-dossier": { "in-dossier": {
"description": "Add redaction in every document in {dossierName}.", "description": "Add redaction in every document in {dossierName}.",
"extraOptionLabel": "Apply to all dossiers", "extraOptionLabel": "Apply to all dossiers",
@ -2121,6 +2124,10 @@
"description-bulk": "The selected items should not be annotated in their respective contexts.", "description-bulk": "The selected items should not be annotated in their respective contexts.",
"label": "False positive" "label": "False positive"
}, },
"in-document": {
"description": "",
"label": ""
},
"in-dossier": { "in-dossier": {
"description": "Do not annotate ''{value}'' as ''{type}'' in any dossier.", "description": "Do not annotate ''{value}'' as ''{type}'' in any dossier.",
"description-bulk": "Do not annotate the selected terms as their respective types in any dossier.", "description-bulk": "Do not annotate the selected terms as their respective types in any dossier.",
@ -2161,6 +2168,10 @@
"extraOptionLabel": "Apply to all dossiers", "extraOptionLabel": "Apply to all dossiers",
"label": "False positive" "label": "False positive"
}, },
"in-document": {
"description": "",
"label": ""
},
"in-dossier": { "in-dossier": {
"description": "Do not {type} \"{value}\" in any document of the current dossier.", "description": "Do not {type} \"{value}\" in any document of the current dossier.",
"description-bulk": "", "description-bulk": "",
@ -2587,4 +2598,4 @@
} }
}, },
"yesterday": "Yesterday" "yesterday": "Yesterday"
} }

@ -1 +1 @@
Subproject commit 2faecb44a926f02a6d4186e58751ac615f2bfd47 Subproject commit c644eaeba2e137607f1ceb42b0ee5ce9a2f68bbe

View File

@ -1,5 +1,8 @@
import { ForceAnnotationOption } from '../../../../../apps/red-ui/src/app/modules/file-preview/utils/dialog-types';
export interface ILegalBasisChangeRequest { export interface ILegalBasisChangeRequest {
annotationId?: string; annotationId?: string;
comment?: string; comment?: string;
legalBasis?: string; legalBasis?: string;
option?: ForceAnnotationOption;
} }

View File

@ -2,4 +2,5 @@ export interface IRemoveRedactionRequest {
annotationId?: string; annotationId?: string;
comment?: string; comment?: string;
removeFromDictionary?: boolean; removeFromDictionary?: boolean;
value?: string;
} }